VNCにはまだまだ便利な機能が秘められている。後編では、前回紹介しきれなかったカスタマイズ方法を解説するとともに、VNCをinetdで起動できるようにしてみよう。inetdを使えば、TCP Wrapperによる経路制限も可能になる。
前編で、VNCを使いこなすための設定をひととおり紹介したが、ほかにも場合によっては知っておくと便利な設定がある。ここでは2種類のカスタマイズ方法を紹介することにしよう。1つは多人数でVNCを使う場合、もう1つはWindow Managerを切り替えて使いたい場合に利用できる。
VNCを使うユーザーが少ない場合はよいが、多い場合はいちいちxstartupを書き換えねばならず面倒だ。完成したファイルを各ユーザーの.vncディレクトリにコピーしてもよいが、スマートではない。そこで、カスタマイズしたxstartupを自動生成させることにしよう。
VNCサーバの実態であるXvncは、/usr/local/bin/vncserverというPerlスクリプトで起動する。このスクリプトは、単にXvncを起動させるだけでなく、新規ユーザーの場合はユーザー環境を整えるという役割がある。vncserver初回起動時にパスワードの設定を行ったのを思い出してほしい。実際にVNC用のパスワードを設定するのは/usr/local/bin/vncpasswdだが、vncserverがパスワードが設定されていないことを検出してvncpasswdを呼び出していたのだ。同時に、.vncディレクトリの作成やxstartupの生成が行われていたのである。つまり、vncserverを編集すればユーザー環境の設定過程に介入できるというわけだ。
xstartupの生成を行っているのは、vncserverの$defaultXStartup以下の部分だ。デフォルトでは
$defaultXStartup = ("#!/bin/sh\n\n". "xrdb \$HOME/.Xresources\n". "xsetroot -solid grey\n". "xterm -geometry 80x24+10+10 -ls -title \"\$VNCDESKTOP Desktop\" &\n". "twm &\n");
となっている。ここを
defaultXStartup = ("#!/bin/sh\n\n". "xrdb \$HOME/.Xresources\n". "LANG=ja_JP.ujis\n". "export LANG\n". "xset +fp /usr/X11R6/lib/X11/fonts/japanese\n\n". "xsetroot -solid grey\n". "kinput2 -wnn -jserver localhost:1 &\n". "exec gnome-session &\n");
などのようにしておけば、新規VNCユーザーからはカスタマイズされたxstartupが生成される(上記の例は、前編の最後で紹介したxstartupを生成する)。単純なPerlスクリプトなので、カスタマイズはそれほど難しくない。
なお、vncserverは書き込み禁止属性になっているので、viの場合は「!」を付けるなどして強制書き込みを行わないと編集結果を反映させることができないので注意すること。
少々お遊び的なテクニックではあるが、VNCサーバ起動時にWindow Managerやデスクトップ環境を切り替える方法がある。これはxstartupを書き換えることで実現する。
これまでの例では、xstartupの最後に
exec gnome-session &
としてGNOMEを起動していた。ここを、
case "$VNCDESKTOP" in twm) xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & twm & ;; kde) startkde & ;; *) exec gnome-session & ;; esac
のように書き換える。すると、通常どおりにVNCサーバを起動した場合はGNOMEが起動する。また、VNCサーバを
$ vncserver -name twm :1
とするとtwmが、
$ vncserver -name kde :1
とするとKDEが起動するようになる。WindowMakerもEnlightenmentも、上記の書式を参考にすれば追加できる。
Copyright © ITmedia, Inc. All Rights Reserved.