Xでのユーザセキュリティ・Xサーバの設定・xinit起動時の注意

Xサーバは3つキーを押すだけで落せる?

たとえば、The XFree86 ProjectのXサーバはControl,Alt,BackSpaceキーを同時に押す事で、落す事ができるよう設定することができます。そのような設定になっている場合、誰かがXのサーバを落す事が可能になります。xdmを用いている環境では、xdmのログインセッションの戻るだけで済みますが、xinitでXを立ち上げてる場合、execを用いてXを立ち上げていないとxinitを立ち上げたshellを自由に操作できる様になってしまいます。これでは画面をロックしていても、十分に危険を排除できていません。また途中だった作業が中断してしまうかもしれません。

Xの設定の確認

Xの環境を利用するユーザはXが適当なキーを押す事で誰でも落せるような設定になっているどうか管理者に確認しましょう。もしそう設定されているならば理由を聞き、特別な理由がなければ落せないような設定にするよう求めましょう。

XF86Configの設定

注:管理者向け

The XFree86 ProjectのXサーバの設定ファイルはXF86ConfigないしXF86Config.<hostname>で、

などにおかれています。(Xサーバ起動時に任意の設定ファイルを指定する事も可能です。)このファイル中に
DontZap
という行があればControl,Alt,BackSpaceキーを同時に押してもXサーバは落ちません。しかしコメントアウトされていたり書かれてない場合には3つのキーを同時に押す事でXを落すことが可能になります。3つのキーでXを落す機能はXの設定をする際には便利ですが、安定して運用するようになったら(そのホストのポリシーや事情に抵触しなければ)使用できなくするべきでしょう。

xinit(startx)起動時の注意

Xは、特定のキーを押す事で落ちるような設定にはなっていなくてもハードウェアのトラブル等で落ちる事があります。もしかしたらXのサーバにバグがあって簡単な操作で落すことができるかもしれません。xinit(startx)を用いてXを起動している場合、このようにしてXが落ちるとどうなるでしょうか。バックグラウンドプロセスとしてXを起動しすぐにexitしていたり、execを用いて起動していれば、(多くの場合)ログインプロンプトが表示されるでしょう。これならば他人があなたのshellの上で自由に操作する事は許されません。このような操作を行っていなければ、xinit(startx)を起動したshellはまだ残っており、Xが落ちた場合自由に操作できるようになります。(当然ながら画面をロックしていたプロセス(ソフトウェア)も終了しています。)

このような注意なしにxinit(startx)を立ち上げるのは、~/.xinitrcの設定をいろいろ変更する場合等のみにし、Xの起動中に席を外す場合には、バックグラウンドプロセスとしてxinitを起動しすぐにshellをexitするないしはexecを用いてXを起動するようにしましょう。exit,&,execについてはshellのオンラインマニュアルを参照してください。具体的には
% xinit(startx) & exit
ないしは
% exec xinit(startx)
とします。私はX-TTを利用しており、16bit colorで立ち上げたいし、またXのログが欲しいので
% startx -- -deferglyphs all -dpi 150 -bpp 16 >&! ~/x.log & exit
としています。(注:私はlogin shellにtcshを用いています。)

コンソールを切替えられる環境での注意

FreeBSDやLinuxではコンソールの切替えをAltとファンクションキー(F1,F2等)で行う事ができます。Xが立ち上がっている場合でもControl,Alt,ファンクションキーによって他のコンソールに切替える事ができます。Xを立ち上げた状態でxinit(startx)したコンソールに切替えるとどうなるでしょうか。バックグラウンドプロセスとしてxinitを起動しすぐにshellをexitした場合はログインプロンプトが戻っていることでしょう。しかしそうでない場合は(execで立ち上げた場合も)xinitが立ち上がった状態で止まっています。ここでControl-cを押す事でxinitを止める事ができてしまいます。(さらに、execしていない場合はshellの操作を許してしまいます。)もちろんXの画面ロックソフトウェアはこの場合無力です。

ですからこのような環境では、バックグラウンドプロセスとしてxinitを起動しすぐにないしすこし時間をおいて(こうしないとうまくXが立ち上がらない環境もあるようです)shellをexitする方法でXを起動しましょう。(% startx & exit,startx & sleep 30; exit等)

バックグラウンドプロセスとしてxinitを起動しすぐにshellをexitする方法については小島肇<kjm@rins.ryukoku.ac.jp>さんに適切な御指摘を頂きました。ありがとうございます。

またWindow Managerが落ちて、X上での操作ができなくなる場合があります。(例:マウスを端末エミュレータ上に移動しても入力できない。)このような場合コンソールを切替えてDISPLAY環境変数を設定し適当なWindow Managerを立ち上げれば操作できるようになることが多いです。ここで、その操作を行ったコンソールでlogoutすることを忘れないでくだい。もしlogoutしなければ、あなたが席を外している時に、誰かがそのshellを使用するかもしれません。(auto-logout機能が働くかもしれませんが。)このようなlogoutのし忘れは、fingerやwhoなどで見付けることができます。これは他の人にとっても同様ですから、注意しましょう。


文責:春山 征吾 (HARUYAMA Seigo)
email: haruyama@unixuser.org

$Id: X4.html,v 1.1.1.1 2001/09/03 03:51:10 haruyama Exp $