今日ふと思いました。

/usr/X11R6/lib/X11/app-defaults/XScreenSaverを編集すればスクリーンセーバーの動きを変えられるけれども、GUIで設定変更したときにこのファイルが書き換えられるのか?と。

たとえば、ユーザープロファイルはベースのファイル/etc/skel/.bash_profileがあって、ユーザーの追加をすると新規ユーザーにコピーされる仕組みになっています。その後、各ユーザーが自分のホームディレクトリ下にある.bash_profileをいじれば個人個人の設定となります。

そこで、GUIツールを使用してスクリーンセーバーの設定を変更した後にXScreenSaverを確認してみましたが、全く変更がありませんでした。見間違いとかではなく、ファイル上ではパスワードロック設定がFalseになっていても、GUIのSCREENSAVER設定ツールを開くとTrue(チェックボックスがオン)になっているのです。もちろん設定を変更して保存してもファイルへの更新はありませんでした。

じゃあ、どこに設定を保存しているのか?

探しました。GUIツールで変更してからすぐに下記コマンドを実行して変更されているファイルを洗い出しました。

find / -amin -1

すると、ホームディレクトリ下に.xscreensaverというファイルが追加されていました。GUIツールを使う前までは存在していなかったファイルです。開いてみると、GUIで設定した項目が・・・

XScreenSaverではパスワードロックがFalseになっていても、.xscreensaverでTrueになっていれば有効になるのです。.bash_profileの動きと同じ感じです。ログイン後、ホームディレクトリ下の.xscreensaverを探し、ファイルがあればその設定で動く。なければ大元のXScreenSaverを読み込む。

こうなると、いくらこちらがスクリーンセーバーの設定をしようにも、ユーザーがGUIツールを触ってしまうと動きが変わってしまう。

強引にスクリーンセーバーをアンインストールする前にGUIツールの使用を制限する事を考えた。

このGUIツールは/usr/X11R6/bin/xscreensaver-demoというファイルです。ツールバーのSCREENSAVERのPROPERTYを見てもこのファイルを実行しているだけです。


ですので、実行権限をはずしてしまいます。

-rwxr-xr-x 1 root root 181080 Nov 21 2004 /usr/X11R6/bin/xscreensaver-demo



-rwxr-xr-- 1 root root 181080 Nov 21 2004 /usr/X11R6/bin/xscreensaver-demo

と変更してしまいます。こうする事により、一般ユーザーは実行不可能となります。


後は、設定する際に各ユーザーのホームディレクトリ下にあるかもしれない.xscreensaverファイルを勝手に消してしまえばミッション終了です。

これでスクリーンセーバー問題は終了で良いかと思います。