カテゴリー: OSについて
投稿者: shinichi
今日ふと思いました。

/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ファイルを勝手に消してしまえばミッション終了です。

これでスクリーンセーバー問題は終了で良いかと思います。
カテゴリー: OSについて
投稿者: shinichi
Linuxのスクリーンセーバーが解除できないで書きましたが、xscreensaverは依存関係が多くてアンインストールするのを断念しました。

どれくらい依存関係があるのかを確認しました。

まずRHEL4
[root@RHEL4-WAS01 ~]# rpm -aq | grep screen
xscreensaver-4.18-5.rhel4.2
[root@RHEL4-WAS01 ~]# rpm -e --test xscreensaver-4.18-5.rhel4.2
error: Failed dependencies:
        xscreensaver is needed by (installed) control-center-2.8.0-12.i386
[root@RHEL4-WAS01 ~]# rpm -e --test xscreensaver-4.18-5.rhel4.2 control-center-2.8.0-12.i386
error: Failed dependencies:
        control-center >= 2.0 is needed by (installed) gnome-volume-manager-1.1.0-5.i386
        control-center is needed by (installed) gnome-session-2.8.0-5.i386
[root@RHEL4-WAS01 ~]# rpm -e --test xscreensaver-4.18-5.rhel4.2 control-center-2.8.0-12.i386 gnome-volume-manager-1.1.0-5.i386 gnome-session-2.8.0-5.i386
[root@RHEL4-WAS01 ~]#

RHEL4からxscreensaverを(きれいに)アンインストールするには
control-center
gnome-volume-manager
gnome-session
の3つを同時にアンインストールする必要があります。

次にRHEL3で確認しました。すると、少し結果が異なりました。
[root@RHEL3 root]# rpm -aq | grep screensaver
xscreensaver-4.10-6
[root@RHEL3 root]# rpm -e --test xscreensaver-4.10-6
error: Failed dependencies:
        xscreensaver is needed by (installed) control-center-2.2.0.1-13
[root@RHEL3 root]# rpm -e --test xscreensaver-4.10-6 control-center-2.2.0.1-13
[root@RHEL3 root]#

RHEL3ではxscreensaverをアンインストールするときにcontrol-centerのみを一緒に消せば良いのです。でも、RHEL3にしろ4にしろ後からアンインストールするとなると面倒くさいので(というよりも、必要な物まで消さなければならないので)、初期導入の時に入れないようにすべきだと思って確認しました。

RHEL3:
今日はインストールCDが手元になかったので確認できませんでした。

RHEL4:
ソフトウェアの選択画面から確認できると思ったのですが、xscreensaverが見あたりませんでした。
textベースでのインストールだと、ソフトウェア選択時にEverythingを選択して詳細を開くとxscreensaverのチェックをはずすことができるのですが、これがどの小分類に入っているのかはわからなかったです(無かった)。本気でインストールを阻止するのであればまず全選択をし、そこから個別に必要不必要を分けていくしかないのかと(そしておそらくRHEL3においても同じかと)・・・

RHEL5:
インストールするソフトウェアを選択する画面で、"Customize now"を選択してNextをクリック。次の画面ではそのままの状態でOptional packagesをクリック。現れたウィンドウ"Packages in GNOME Desktop Environment"のリスト中ちょうど真ん中当たりにgnome-screensaverがあるのでチェックをはずしてCloseをクリック。
これでスクリーンセーバーはインストールされなくなります。