X について学ぶことはたくさんあり、不可思議なオンラインマニュアルの 大地の下にたくさんの情報が埋まっており、多くの人々はわざわざ読まないこ とがたくさんあります。読んでない情報のどこかに比較的重要であり、間違いやすいものがあ れば、完全にはまってしまうことになります。プログラムを X 上で構築する ことや、 X のセキュリティをチェックすること、その他の多くのことはもっと 難しいかもしれません。なぜなら、 X と X 上で動作するものは非常にたくさ んあるからです。このセクションでは、比較的上級者向けで紛らわしい状況を いくつか押えます。
あなたがよくできた Linux のディストリビューションをインストールしていて、 現状に満足しているのならば、より後に、またいじくりまわしてインストールする のが好きならば、より早くはなりますが、いつかはあなた自身でアプリケーション のコンパイルをしなくてはならなくなる時が来るでしょう。 これは権利ではなく特権だということを忘れないで楽しみましょう!
はじめに、 X といっしょにプログラムをコンパイルするときのポインタをいくつか
述べます。ほとんどの新しいアプリケーション、とくに GNU のものには
configure というスクリプトがルートディレクトリにあります。もち
ろんあなたがソースコードをそこへ展開していたと仮定しています。
このプログラムを ./configure
として実行すると
あなたのシステムについてのいろいろな情報を自動検出します。
そのあとで単に make
を実行してから
root になって make install
すれば、プログラムをあなたのシステム
に組み込めます。
configure がなかったらもうちょっといじくる必要があります。
たいていの X のプログラムは Makefile を生成するために
xmkmf
というプログラムの実行を必要とします。
もし Makefile がディレクトリの中に見あたらなかったら、たぶんこ
れを実行することで適当な設定を生成して make
を実行できます。
ときには congigure スクリプトを実行するとそのアプリケーションの 実行に推奨・必要なライブラリがないと警告を受けることがあります。 たとえばわたしは先日 xscreensaver をインストールして、 Mesa ライブラリがインストールしてあれば 3D モードがサポートされ ることに気づきました。 このようなときに、そのライブラリをインストールしたければ、 まずあなたの Linux ディストリビューションの CD などのインストールメディ アの中でそのライブラリを探してみましょう。 ライブラリをコンパイルしようとしたときに起きるたくさんのトラブルを避けら れるかもしれません。
ライブラリをコンパイル・インストールして利用できるようにしたら
X プログラムのインストール元のディレクトリに戻り config.cache
ファイルを消して、configure スクリプトを再び実行することができ
ます。うまくいけばあなたがインストールしたライブラリを検出してくれるでしょう。
ときにはうまくいかないときもあり、そのときは動作するようにいじくる必要が
あります。このような事態は Linux ファイルシステム標準をきちんとサポート
していないライブラリをネットからダウンロードしてきたときにときどき起こり
ます (たいていのライブラリはサポートしています)。
X は All or Nothing という非常に単純なセキュリティモデルにもとづいて いるとしばしばいわれます。そのとおりなのです。 X は暗号化によってある程度洗練されたセキュリティを使うように設定できます が、これはこの HOWTO の範囲外です (いまのところは)。 以降の議論ではユーザはいかなる暗号化も利用していないと仮定します。
まず第一に、 X のプログラムをコンパイルするとき (に限らず他の場合にも)
単純なルールに従うよう努めなければなりません。必要ないかぎり root になら
ないようにしてください。
一般ユーザで ./configure && make
(configure スクリプトがなけれ
ば make
だけ) を実行します。そして root 権限でインストールするた
めに su -c "make install"
とタイプしてコマンドを実行し、プロンプトに root のパスワードを入力します。
この方法ならば root でログインする必要はなく、たったひとつのコマンドを
root で実行するだけで、通常のユーザプロンプトに戻ります。
これがスマートに、安全にソフトウェアをインストールする方法です。
第二に X のソフトウェアを root で実行することについて考えます。 X は本質的にあまりセキュアではありません。ですから特定の Linux ボックス のセキュリティが主要な関心であるならば X は一切インストールするべきでは ありません! そうはいっても、かなりの人々はおしゃれな設定プログラムやパッケージ管理ツー ルを X 上で動かしたがります。 X を root で起動することは勧められません。 それはよくない考えです。もっともっとよい方法があります!
もし X のアプリケーションを root で実行したいのならば、ますあなたの通常
のユーザアカウントでログインして、そこでそのアプリケーションを起動してく
ださい。いままでに述べたように、本当に必要でなければ root でログインしよ
うとしてはなりません。root ユーザはシステム上で、無数の方法でそのシス
テムを完全に破壊することを含め、あらゆることができます。
単にあなたの xterm といったアプリケーションの中で
su -c "glint -display :0.0"
のようなコマンドをタイプすればデスクトップ上にウィンドウが開きます。
このときひとつのウィンドウだけが root 権限で動いています。デスクトップ全
体ではありません。
よりセキュリティを高めるために、root で実行するプログラムについては絶対
パス名を使うことも考えてください。
ssh と ssh-agent の愛好者のためのテクニックを Tomasz Motylewski から教えていただきました。以下の行を /usr/X11R6/lib/xinit/Xclients ファイルに追加してください:
eval "exec ssh-agent fvwm${FVWMVER} ${FVWMOPTIONS}" >
"$HOME"/.FVWM${FVWMVER}-errors 2>&
つまり、標準の fvwm${FVWMVER} ${FVWMOPTIONS}
コマンドを先程の
ものと置き換えてください。これはウィンドウマネージャーを
ssh-agent の子プロセスとして起動するための指定です。それから、
( /.ssh/identity ファイルに RSA 識別鍵をお持ちであれば)
ssh-add > /dev/null
を xterm のセッションから実
行してください。これが動作すれば、全ての X のウィンドウにおいてそのユー
ザは認証されているはずです。
これは読者からの提案であり、現時点では筆者は ssh を使った経験
はない点に注意してください。したがって、これは読者の皆さんの責任におい
て試してください! 最近の Linux ディストリビューションでは
setup
やその類のプログラムで ssh の設定を自動的に行
えます。つまり、 ssh の設定についてはあまり心配する必要はなく、
どのように動作するのかを理解すればかまいません。
X のユーザ認証における謎の代表例は、多くのユーザが X で出会うセキュ リティの問題でしょう。Tomasz Motylewski さんが以下の説明を説明してくれ ました。これは問題をとてもうまくまとめています。
「…XFree86 のデフォルトの設定では、``startx'' で始まる X セッションは ローカルホストから接続している全てのユーザからのコマンドを受け付けます。 もしあなたがユーザ 1 として X を起動しており、ユーザ 2 としてリモート ログインしていれば、ユーザ 2 はキーボードとデスクトップに完全にアクセ スすることができます (以前、私の友人が冗談で cron コマンドを設定し、1 時間ごとに私の X のデスクトップのダンプを彼に送ったことがありました。 私は 2 週間もそれに気づかないままでした!)」
これはあまりいいことではありませんが、不幸なことにほとんどの読者がまさ にこの問題を抱えています。Tomasz さんは単に startx を実行する のではなく、xdm を使ってログインしているのならば (この HOWTO の前の部分で詳しく説明しています) これはあまり問題にならないことを指摘 しています。というのも、 xauth プログラムがアクセスを制御して いるからです。 xhost コマンドを実行することにより、あなたの X セッションに誰がアクセスできるのかを調べることができます。 xhost コマンドの出力に含まれるホストの全てのユーザは、あなた のキーボードとスクリーンにフルアクセスすること許可されます。
コマンドラインから X を安全な形で起動したいなら、設定に以下の修正を加
える必要があります。まず startx
(たぶん /usr/X11R6/bin/startx にあります) を修正し、最後の行の
xinit $clientargs -- $serverargs
を
exec xinit $clientargs -- $serverargs -auth ~/.Xauthority
に変更します。
また、次に .xinitrc またはシステム全体用の /usr/X11R6/lib/xinit/xinitrc (このうち実際に使われている方。たぶんホー ムディレクトリにある方でしょう)を編集し、ファイルの最初に以下の 記述を加える必要があります:
# if Xserver has been run with "-auth ~/.Xauthority" option
this will
# prevent other users on your machine to connect to your X server
# unless you allow it explicitly using xhost +host or give them
# your ~/.Xauthority file.
xauth generate $DISPLAY . trusted
常に気を配り、自分が設定したセキュリティを xhost を実行して確 認し、全てが正しく動作していることを確かめてください。