「startx」をする前に root になり, 以下の作業を行ってください.
# cd /usr/X11R6/lib/X11/xinit# cp xserverrc xserverrc-org
# vi xserverrc
![]()
xserverrc ファイル中の
exec /usr/bin/X11/X -dpi 100 -nolisten tcpを下記のように書き換えます.
exec /usr/bin/X11/X -dpi 100
次に, root を抜け, 前回の授業で編集した /etc/hosts.allow が以下のようになっていることを念のため確認して下さい.
# exit |
< root を抜ける < cat を用いて /etc/hosts.allow を見る < 全てのデーモンに対して, 192.168.0.1?? からのアクセスのみを許可 (?? は隣の実験機番号) |
作業が終了したら,
$ startx![]()
まず X サーバの制御プログラム「xhost」を使って 3n+1 or 3n+2 の X クライアント からのアクセスを許可します.
$ xhost +192.168.16.1?? |
< joho??からの要求を受け付ける
|
このようなやり方もあります.
$ xhost + |
< すべてのマシンからの要求を受け付ける
|
環境変数 DISPLAY に示されるサーバに X クライアント(以下 X と略することがある) が表示されます. 自分が使っている端末に表示するように設定します. 設定の書式は以下の通りです.
(ホスト名):(ディスプレイ番号).(スクリーン番号)
設定例
$ export DISPLAY=localhost:0.0
または (joho06 の場合)
$ export DISPLAY=joho06.ep.sci.hokudai.ac.jp:0.0
設定を確認してみましょう.
$ printenv | grep DISPLAY
DISPLAY が先程設定した値になっていれば設定完了です. 試しに xeyes を実行してみましょう.
$ xeyes &![]()
目玉のウインドウが出て来ましたね?
X は環境変数 DISPLAY の値に設定されている場所へ表示されます. DISPLAY に他のマシン (X サーバ) を指定すれば,そこにクライアントの 画面を飛ばせます. 3n+1 マシンは 3n+2 マシンへ, 3n+2 マシンは 3n+1 マシンへ xeyes を 飛ばしてみましょう. IP アドレスは相手のマシンのアドレスを入力してください.
$ export DISPLAY=192.168.16.1??:0.0$ xeyes &
![]()
次に「xhost」を X クライアントからのアクセス制限に使います.
$ xhost -192.168.16.1?? |
< joho??からの要求に答えない
|
制限を加えた状態で X が飛ばせるか試してみましょう. [2.3]と同様にお互いのマシンに xeyes を飛ばしてみよう.
$ xeyes &![]()
「xhost」はホスト(マシン)単位でアクセスを制御します. 「xauth」でさらに厳しく制限することができます(ユーザ単位での制限). 詳しくは man で確認してください. 「xauth」を使用するときは必ず 「xhost -」 としておくこと忘れないようにしてください.
サーバ側(例 joho11: 画面を飛ばされる方)
$ xauth list :0.0joho11/unix:0 MIT-MAGIC-COOKIE-1 174bakcfd407df4fa7cc5f4457c11147
サーバで表示された174bakcfd407df4fa7cc5f4457c11147 (暗号化された文字列)をクライアント側に設定します.
クライアント側(例 joho12: 画面を飛ばす方)
$ xauthUsing authority file /home/hoge/.Xauthority xauth> add 192.168.16.111:0.0 . 174bakcfd407df4fa7cc5f4457c11147
xauth> exit
% xeyes &
![]()
暗号化された文字列がサーバとクライアントで一致したときのみ目玉が表示されます.
設定の削除方法
$ xauthxauth> remove 192.168.16.111:0.0
xauth> exit
![]()
時間に余裕がある場合は, 再度 xauth を実行し, add の部分の 赤字の文字列をわざと間違えてみて, 本当に目玉が表示できないことを 確かめてみよう.
相手のコンピュータに接続し, X を自分のコンピュータのディスプレイに表 示します. 接続先のコンピュータにアカウントが必要です. ssh を 使うと,自動的に画面が転送されます.このとき xhost などの設定は 不要です(内部で xauth を設定しています).
$ ssh -X 192.168.16.1?? |
< ?? は相手のマシン番号
|
3n+1 マシンおよび 3n+2 マシンで「xhost +」を設定し, お互いに覗き見てみよう.
サーバー側
$ xhost +![]()
クライアント側
$ xwd -display 192.168.16.1??:0.0 -root -silent -out xhost.xwd |
< xhost.xwd ファイルに画像をダンプ(記録)する ?? は相手のマシンの番号 < ダンプした画像を表示 |
xwd | X のイメージ(画像)をダンプする X クライアント |
display | 画像ビューワー |
3n+1 マシンおよび 3n+2 マシンで, お互いに仮想端末を検索し, お互いの入力を 監視してみよう.
サーバー側
$ xhost +![]()
クライアント側
$ xwininfo -display 192.168.16.1??:0.0 -root -tree | less |
< 仮想端末らしいウインドウのIDを探す ?? は相手のマシン番号 < 探し出した ID を設定しのぞく |
xwininfo | ウィンドウの属性を表示 |
xev | 指定したウインドウで発生したイベントを表示 |
これまで試してきて分かるように xhost + と設定すると全てのホストからの ウィンドウ表示要求を受け入れることになってしまいます. これは密かに誰かから 監視される可能性があることを意味しています. セキュリティー上好ましくないので なるべく xauth を使うようにしましょう.
最終更新日: 2005/01/21 (小西 丈予) | Copyright © 2005 inex |