連載 / 遠隔オフィスとの接続ー 図 3 フォームにユーサー名やパスワードを入力 フを新第第町を : 0 明純イ 0 ーへせ はう第、 3 み ~ を一 ~ はは 当ノトンブド ! 0 / 宿、ッ′を ! 0 : っ 11 ・冢・行′を ユーサー名 : パスワード : 実行するコマント : C で作った CGI プログラム ・「エ関直りイト それでは、任意の UNIX のコマンドを実行する CGI プログラムの C 言語版を紹介しましよう。末尾のリスト 2 にこのプログラム run. c を示しました。 run. c は、ユー サー認証をおこない、指定されたユーサーの権限て指定さ れたコマンドを実行します。 なお、このプログラムは、理解しやすさを第一に考え てエラー処理や入力値の判定をはとんどおこなっていませ ん。実用化するには、もうすこし書き足す必喫があるでし よう。また、デバイスを制御する一にのコマンドや、イン タラクテイプなコマンドに対応する仕組みもありません。 このようなコマンドを使いたいのであれは、仕組みそのも のを根底から変更する必があります。 さっそく、ソースコードを見てみましよう。 ストの最後の main() 関数を見てください。 main(argc , argv) int argc ; char *argv ロ ; init ( ) ; if (parse ( ) = = ERROR) { message("lnvalid input\n") ; } else if (setuid-process() = = ERROR) message("Permission denied く p>\n") ; } else { exec—command() ; message(tmp) ; まず、リ こでは、実際に処理をおこなっている関数を呼び出 し、エラーメッセージや処理結果を message() 関数を使 って表示します。全体の流れは次のようになっています。 62 1. init() 関数で初期化 2. parse() 関数で Web プラウサから受け取ったデータを 角財斤し、変数に保存 UNIX MAGAZINE 1999.10 ます。 ている decode() 関数は、変換された文字をもとに戻し という処理をおこないます。 parse() 関数から呼び出され ( は 16 進 ・そのはかの使用できない文字は、、 % " の形式に変換 ・空白文字は、、十 " に変換 に使えない文字列について、 pass 、 command に保存します。 Web プラウサは URL ウザからのデータを読み込み、内容を角斤して変数 user 、 parse() 関数は、標準入力へ送られてきた Web プラ 使われます。 ァイルは、コマンドの実行結果を一印判勺に保存するために というファイルのパス名を保存している変数てす。このフ /usr/tmp/runProcessID 最後の tmpf は、 ・ tmpf ・ command ・ pass ・ user 数をネ川月化しています。 init() 関数では、プログラム中て利用する次の 4 つの変 Web プラウサ ( 標準出力 ) に出力するだけの関数です。 これは、引数で渡された文字列を HTML の形式にし、 く /html>\n" ,msg) ; printf ( " く body> く pre>%s く /pre> く /body> Message く /title> く /head>\n") ; printf (" く html> く head> く tit1e>Run Command printf ( "Content—type : text/html\n\n" ) ; void message(char *msg) 面の都合上、で折り返しています。以羽司様 ) message() 関数の部分は以下のようになっています ( 誌 5. 実行結果を Web プラウザに返送 4. コマンドを実行 ロセスの権限を変更 3. setuid-process() 関数でユーザー認証をおこない、プ
ロプログラミンク・テクニック 多治見寿和 ftp 前回は、ネットワークを利用したアプリケーションと UNIX MAGAZINE 1999.10 というのも、 inetd から ftpd を起動けると、 FTP ポー げる目的で ftpd デーモンを単独て起動するのです。 も考えられます。このような場合に、システムの負荷を下 あり、処理しなければならない接続の数か膨大になること いられますから、ひろく一ヨ殳の人か接続してくる可能が れません。一方、 FTP は anonymous FTP などにも用 れほど多くの要求がまとめてやってくるとはあまり考えら TeInet の場合には、目的が〕鬲ログインですから、そ うすこし積極的な理由があります。 起動するのはデバッグのためですが、 ftpd の場合にはも 付けて起動すると単体でも重川します。 telnetd を単体で パーサーバー inetd により起動されますが、オプションを telnetd と同様に、 ftpd も通常はインターネット・スー ftp コマンドカ甘是供されています。 コマンドになります。 UNIX では、 4.2BSD のころから ました。 ftpd はサーバーで、対応するクライアントが ftp 様に、 TCP/IP の初期のころから標準的に提供されてき イル転送をおこなうためのプロトコルです。 TeInet と同 ftpd を紹介しました。 ftpd か実現している FTP は、ファ 前回、並行サーバーを実現しているプログラムとして ftp と ftpd な機能についても紹介します。 しみてみることにしましよう。また、描匠の FTP のイ叫リ とり、ネットワークを利用するサーバーの乍をもうすこ トから構成されています。今回は、 ftp プログラムを例に ワーク・アプリケーションの多くはサーバーとクライアン して telnet を紹介しました。 telnet にかぎらす、ネット トに接続要求がくるたびに inetd が fork し、新たなプロ セスを作成して ftpd を exec することになります。起動 された ftpd は、各種の期化作業をおこなってからサー ビスの提供を始めます。これに対し、 ftpd をデーモンと して単独で起動すると、初期化作業は 1 度だけで、あと は接続要求が到着するたびに fork して新たなプロセスで サーピスを提供するだけです。つまり、 1 つの接続要求に 対する処理が、初期化竹業と exec システムコールのぶん だけ軽くなるのです。このようにすると、 ftpd のプログ ラムは若干複雑になりますが、多数の接続要求が到着する 場合にシステムの負荷を下げることができます。 * Detach from parent . if (daemon(l, 1 ) く 0 ) { sys10g(LOG—ERR, "failed tO become a daemon") ; exit(l); こて利用している daemon 関数は、プロセスを制御 端末から切り離し、さらにバックグラウンドで実行するよ ftpd の接続の初期化 前回の復習も兼ねて、 ftpd コマンドをデーモンとして 起動したときのソケットの初期化をおこなう部分に注目 してみましよう。 こでとりあげるのは、 FreeBSD 3.2 ー RELEASE にイ寸属する ftpd のソースコードの ftpd.c フ ァイルです。 370 行目以降で、デーモンとして起動されているかどう かを石忍したあと、ます親プロセスとの切離しをおこない ます ( 誌面の都合 E 、てオ斤り返しています。以羽司様 ) 。 125
連載 / 遠隔オフィスとの接続ー parse() の最後の、 if (*user ! = *command ! = return OK; } else { return ERROR; 図 4 CGI の実行結果 河井集表示 ( ) ジャンプ喞 Oøm 取 0 ヘルプ ( 印 : Run 00 宿衂聞 d M 鱸 3 e - 権 0 夘を & & *pass イの 再読み込み耒ーム検幸 ガイド 場所 : い / 帚 0 ゴト bin/AP runcgi 印 セキュリティ ' 関連サイト では、 Web プラウザからすべての情報か渡されているか どうかを石薩忍し、不足があれば工ラーにします。この処理 は、 JavaScript などを使って Web プラウザ側でおこな うようにすることもできます。 setuid-process() 関数は、この CGI のなかでもっと も重要な部分です。ここでは、 UNIX のアカウント情報 とユーサーが入力した情報をもとに認証をおこない、成功 したらプロセスの実イ限を変更します。 UNIX MAGAZINE 1999.10 定します。たとえは、ユーザーカ甘旨定したコマンドが、 ます、 tmp 変数には実行するコマンド列をそのまま設 system(tmp) ; command , tmpf) ; sprintf (tmp, "%s >%s 2 & > 1 " command() 関数はかなり簡略化しています。 Web プラウサから渡されたコマンドを実行する exec- でプロセスの権限を変更しています。 setuid(pw—>pw—uid) ューザー名とパスワードの組合で認証か成功したら、 OK & & pw¯>pw—passwd) if (strcmp (crypt (pass ,pw—>pw-passwd) , スワードであるかどうかを判定しています。 があります。以下のコードでは、これを利用して正しいパ て暗号化すると、もとの暗号化されたものと一致する性質 暗号化されたものをもう一度クリアテキストのパスワード います。 UNIX で使われているパスワードは、 crypt() で に登録されている暗号化されたパスワード文字列が入って ます。 pw->pw-passwd には、 /etc/passwd ファイル て、入力されたパスワードと一致しているかどうかを卩串ヾ 次に、エントリからパスワードのフィールドを抜き出し pw = getpwnam (user) ; ポインタである pw 変数に設定しています。 たユーサー名のエントリを探し出し、 passwd 構造体への 以下のコードは、 /etc/passwd ファイルから指定され ・カクーク Is /etc LGTOuscsi TI MEZONE を 00 を 引こ色 &pache apache. Old asppp . cf au [ 0 ー hO を をしを 0- 用を ster autopush 0 を t を b 尾 5 chroot 0 「 0 n cron. d 035. conf だったとすると、 tmp 変数には次のようなコマンドが設 定されます。 ls /etc >/usr/tmp/runPT 、 ocessID 2 & > 1 C のプログラムからコマンドを実行するガ去には何通り かありますが、 こでは system() 関数を使っています。 system() は、シェルを起動して引数で受け取った文字列 をそのまま実行します。このプログラムでは、ユーザーが 指定したコマンドを実行し、標準出力と標準ェラー出力に 出力されるメッセージを /usr/tmp/runProcessID に保 存しています。 最後の処理は、出力したメッセージを読み込んで web プラウサに返すことです。ここでは message() 関数を流 用するためにすこし手抜きをしていて、 tmp 変数に保存で きる長さ ( 1 , 024 バイト ) だけメッセージを読み込み、そ れを送り返しています。したがって、返された結果の最後 の 1 文字だけか文字化けすることがあります。これは、 2 バイト文字 ( 全角のかなや漢字など ) の前半の 1 バイトだ けが送られたからだと捉えてください。 図 4 の画面は、 Web プラウザから正しいユーサー情 報とパスワードを入力し、 "ls /etc" コマンドを実行させ たときの結果です。そっけない表示ではありますが、 /etc ディレクトリのファイルの一覧が表示されています。 ☆ 今回は、ユーザー認証や権限設定時の安全性に重点をお いて、 CGI を作る際の注意点を説明しました。 CGI を安 全なものにするには、プログラムの安全性を考えるだけで はなく、システム本でセキュリティ・ホールを作らない ように注意することも必要です。 63
連載 / 遠隔オフィスとの接続ー ーム ・ファイルの所有者を root に変更したときに、 set user- bit をクリアする。 また、ネットワーク上の言算機どうしのアクセス権を設 定する、 ・ hosts. equiv ファイノレ ・ . rhosts ファイ / レ などにも注意してください。 NFS で公開しているファイ ルの権限も適切に管理する必要があります。 システムに負荷を加える攻撃 Web サーバーや FTP サーバーに対して、ま可間に何 度もアクセスをしたり、巨大なファイルを繰り返しダウン ロードするような攻撃もあります。 その結果、回線の容量カ坏要なアクセスでパンクした り、過負荷のためにユーザーに対するサービスカ歸ったり します。 このような攻撃の景些を軽減する手段として、 攻撃をしかけてくるシステムよりも能力か高いシステム を用意する ・攻撃をしかけてくるシステムからのアクセスをネットワ ークの入口 ( ルータなど ) で拒否する などのガ去があります。 しかし、前者はシステムの導入のためにコストと時間が かかるので、あまり現実的とはいえません。 後者は迷惑なアクセスから身を守るための孝第斗書的な対 去ですが、攻撃者がいくつものシステムを使い分けてい たり、複数の攻撃者がいる場合には、つねに不正アクセス を見張ってルータなどの設定を変更する必要があるのでイ タチごっこになってしまうかもしれません。 いずれにしても、このような攻撃に対しては根本的な回 避策がないのか伏です。 UNIX コマンド実行用の CGI 前回は、遠隔オフィスから Web インターフェイスを使 い、本社のホストの任意のコマンドを実行する CGI を紹 介しました。 UNIX MAGAZINE 1999.10 リスト 1 UNIX のコマンド列を実行するフォ く html> く head> く tit1e>Run Command く /title> く /head> く body> く form method="POST" action= ューサー名 : く br> く blockquote> く input type="text" name= く /blockquote> / くスワード . く br> く blockquote> "/cgi-bin/run ・ cgi"> く br> く input type= password" name= password"> く br> く /blockquote> 実行するコマンド : く br> く blockquote> く input type="text" name=ttcommand"> く /blockquote> く input type=" submit " value=" 送信 " > く input type="reset" value=" クリア” > く /form> く /body> く /html> この CGI は、 Web サーバーの権限で実行されます。で すから、各ューザーの権限でコマンドを実行するには、所 有者が root の setuid プログラムとして重川させ、コマ ンドを指定されたユーサーの権限に変更する必要がありま した。ところが、紹介した CGI はシェル・スクリプトで 入力フォーム た CGI プログラムを紹介します。 そこで、今回はコンパイル言語である C 言語で作成し を奪わ書き換えられる危険があります。 作られていたので、前述のようにスーパーユーサーの権限 図 3 は、このフォームにユーザー名やパスワードを入 ん。 としていること以外は、とくに注意すべき点はありませ ・フォームのデータの受け渡し方式に POST を使う ・パスワードの入力には input タグの password 属性を づき、 サから呼び出すためのフォームです。前述の注意点にもと リスト 1 は、 UNIX の任意のコマンドを Web プラウ 力した状態です。 61
連載 / 遠隔オフィスとの接続ー return ERROR; / * コマンドを実行する * / int exec—command() FILE *fp; int C , i ; C ommand , / * 実行結果を tmp パッフアに読み込む * / system(tmp) ; / * コマンドの実行 * / sprintf (tmp, "%s >%s 2 & > 1 " / * 実行するコマンド文字列を作る * / tmpf) ; if ( (fp=fopen(tmpf , "r")) = = NULL) { *tmp } else { for (i = 0 ; (c=getc(fp)) ! = EOF & & i く BUFSIZE; tmp[i] unlink (tmpf) ; void message(char *msg) printf ( "Content—type : text/html\n\n" ) ; printf(" く html> く head><tit1e>Run Command Message く /title> く /head>\n") ; 66 message(tmp) ; exec—command() ; } else { message("Permission denied く p>\n") ; } else if (setuid-process() = = ERROR) { message("lnvalid input\n") ; = ERROR) { if (parse() init() ; char *argv ロ ; int argc ; main(argc , argv) printf ( " く body> く pre>%s く /pre> く /body> く /html>\n" ,msg) ; UNIX MAGAZINE 1999.10
連載 / Linux でリラックスー とするだけです。 exim デーモンの起重加オプションなど をいちいち憶えておく必要もなく、たいへん簡単です。 デーモンが使用する設定ファイルを変更したときは、ほ とんどの場合デーモンに SIGHUP シグナルを送って、設 定ファイルを再度読み込ませる必要があります。これに は、たとえば、 # ps ax ー grep exim 582 aO S 0 : 00 grep exim 0 : 00 /usr/sbin/exim —bd —q30m 169 ? S 0 : 00 vi /etc/init . d/exim 502 al S # kill -HUP 169 のようにします。しかし、 Debian GNU/Linux のネノ期 Debian GNU/Linux では、さまざまなパッケージを シンポリック・リンクのイ乍成と削除 できます。 のようにして、簡単に設定ファイルを読み込ませることが # /etc/init . d/exim force—reload 化スクリプトを使用すれば、 106 インストールしたい場合に、 update-rc. d コマンドを使え のパッケージではないソフトウェアのネ川月化スクリプトを を起動しないようにしたい場合や、 Debian GNU/Linux し、すでにインストールされているパッケージのデーモン rc. d コマンドを手動で実行する必要はありません。しか rc. d コマンドか夫行されます。このため、通常は update- postinst スクリプトや postrm スクリプトから update- パッケージのインストール時や肖丱に、前号で説明した Debian GNU/Linux のノヾッケージ管理システムでは、 rc. d コマンドが用意されています。 リック・リンクを簡単に作成、削除するための update- d ディレクトリから / etc / ⅲ it. d ディレクトリへのシンポ このため、 Debian GNU/Linux では /etc/rcrunlevel. プトへのシンポリック・リンクも削除する必要があります。 レクトリから / etc / i ⅲ t. d ディレクトリ内の初期化スクリ は、ネ月化スクリプトとともに、 /etc/rcrunlevel. d ディ る必要があります。また、パッケージを削除するときに リ内のネ月化スクリプトにシンポリック・リンクを作成す /rcrunlevel. d ディレクトリから /etc/init. d ディレクト プトを含むパッケージをインストールするときには、 /etc 自由に追加したり削除することができます。匆月化スクリ ばシンポリック・リンクの作成や削除が容易になります。 もちろん、 ln や rm コマンドなどを使って、手動でシンポ リック・リンクを作成することもできますが、複数の /etc/ rc 襯 e 眦 /. d ディレクトリにシンポリック・リンクを作成 する必要があるためやや面倒です。以下で、 update-rc. d コマンドの使用法を簡単に説明します。 ・シンポリック・リンクの作成 update-rc . d [-n] スクリプト名 defaults [ 数字 ] /etc/rcrunlevel. d ディレクトリから、、、スクリプト 名 " で指定された初期化スクリプトに対して、デフォル トの設疋でシンポリック・リンクを作成します。、、ス クリプト名 " で指定された初期化スクリプトが、 /etc/ init. d ディレクトリ内に存在している必要があります。 デフォルトの定では、実行レベル 2 ~ 5 には開始スク リプトとしてのシンポリック・リンクを、実行レベル 0 、 1 、 6 には停止スクリプトとしてのシンポリック・リ ンクを作成します。また、スクリプトの実行順序として は 20 を使用しますが、、、数字 " か指定された場合はこ の値を使用します。 ー n オプションを指定した場合は、シンポリック・リン クは作成されません。これは、 update-rc. d コマンドの 実行によって、どのようなシンポリック・リンクが作 成されるかを調べたいときに使用します。 たとえば、 /etc/init. d/exim という初期化スクリプト か有雀するときに、 /etc/rcrunlevel.d ディレクトリか ら /etc/init. d/exim へシンポリック・リンクを作成す るには以下のようにします。 # update—rc. d exim defaults Adding system startup /etc/rcO . d/K20exim /etc/rcl . d/K20exim /etc/rc6. d/K20exim /etc/rc2. d/S20exim /etc/rc3. d/S20exim /etc/rc4. d/S20exim /etc/rc5. d/S20exim for /etc/init . d/exim . . /init . d/exim . /init . d/exim . /init . d/exim . /init . d/exim . /init . d/exim . /init . d/exim . /init . d/exim デフォルトの設定とは異なる設定でシンポリック・リン クを作成することもできます。詳しくはオンライン・マ ニュアル update-rc. d(8) を参照してください。 ・シンポリック・リンクの削除 update-rc . d [-n] [-f] スクリプト名 remove UNIX MAGAZINE 1999.10
連載 / 遠隔オフィスとの接続ーの 図 2 パスワードを引数て度すと ps コマンドて知られるがある $ /bin/ps -af UID PID PPID moti 19380 15024 kome 16476 16475 arare 16557 16556 C STIME TTY 0 16 : 19 : 33 pts/4 0 13 : 17 : 04 pts/15 0 13 : 32 : 03 pts/3 T I ME CMD 0 : 00 rlogin myhost 0 : 00 rlogin yourhost 0 : 00 auth me HIMITSU うフィールド ) を見ただけでパスワードが分かってしまい ます。 GET を使った場合の問題は、パスワードが Web プラ ウザ上に表示されることだけではありません。 URL は、 Web サーバーに渡されたときにログファイルに言求され てしまうでしよう。また、 Web プラウサと Web サーバー とのあいだにプロキシー・サーバーがあれは、そこのログ にも言求されてしまうかもしれません。 秘密のデータを渡す場合は、 GET ではなく POST を 使いましよう。 暗号化されていないパスワードを流さない 図 1 のなかでもっとも危険なのは、 Web プラウサから Web サーバーまでの通信路です。遠隔オフィスと本社と のあいだでインターネット接続を利用しているのなら、通 信路はインターネットを経由するので盗聴される危険があ ります。 ューザーの入力したユーサー名とパスワードをクリアテ キスト ( 暗号化されていない文字列 ) のまま通信路べ充す と、インターネットー E て盜聴している人に知られてしまう かもしれません。 なガ去は、引数て指定することです。たとえは、認証用プ プログラムからプログラムヘデータを渡すもっとも簡単 プログラムペ度すガ去にも注意が必要です。 は、ユーサー名やパスワードを CGI プログラムから認証 証プログラムを用意することもあるでしよう。その場合 CGI プログラムから認証の部分を切り離し、専用の認 パスワードをプログラムの引数にしない ることで一気に鮹夬できます。 ネットワークを VPN (Virtual Private Network) にす も紹介したように、 Web プラウサと Web サーノヾー間の とりするときにはつねに間題となります。しかし、以前に この間題は、パスワードにかぎらす秘密のデータをやり 60 ログラム auth を、 auth 社 se ロ ~ 07 れ e asswot 、 d のように呼び出すのです。しかし、 auth プログラムがク リアテキストのパスワードを受け取る場合は、 ps コマン ドで内容力加られてしまいます ( 図 2 ) 。 認証用のプログラムと CGI プログラムを別々の引機 で実行していて、通信でデータを渡すときにも注意が必要 です。ネットワーク上をクリアテキストのパスワードが充 れると、やはりネットワークを盗聴している人に知られる 危険があります。 ただし、認証プログラムと CGI プログラムがともに社 内ネットワーク上にあるのなら、盗聴できないように管理 すれば危険を避けられます。 社内ネットワークが盜聴されるような状態であるとし たら、パスワードを扱うほかのコマンドにも注意が必要 です。たとえは、 telnet コマンドもユーサーが入力した パスワードをクリアテキストのままネットワーク上に流し ます。 setuid プログラムに注意 setuid プログラムは、パスワードを知らなくてもスー パーユーザーの権限を得られる強力な手段です。特別なフ ァイルにアクセスするときに役に立ちますが、思いもよら ない去で権限を盗まれる危険性もあります。とくに、シ ェルや Perl などの、、人間か第冗める " スクリプトを setuid プログラムにすると、ちょっとした設定ミスがもとで誰か に権限を入手さオ t 、スクリプトを書き換えられてしまうか もしれないのできわめて危険です。 そのため、 chown コマンドに対して次のような制限を 設けている OS もあります。 ーイ殳のユーザー権限では chown コマンドを実行できな UNIX MAGAZINE 1999.10
, けつま 3 びっ u ド Mew と連繋して利用するアプリケー しします。 とりあげるのは、 ションについてお話 mhc Mew と連繋して重川乍するスケジューラ mew-nmz. el 全文本索アプリケーション Namazu を 用いた電子メールの検索機能 の設定についてです。どちらも使い勝手がよく、インスト ールして最初に使ったときには、 、、私か欲しかったのはこれなのよ ! " と感動したものです。 Mew の設定 電子メールを読む場合には、 summary モードで、 になります。 トカット・キーを、使う場面ごとにまとめると以下のよう たとえは、電子メールに関するおもなコマンドのショー なり満足できる使い心地になります。 ショートカット・キーをいくつか慮えれは、そオ・けごけでか Mew のシステムは親切にできているので、コマンドの ール管理アプリケーションの Mew をインストールしま 前々回 ( 1999 年 7 月号 ) では、 Emacs で使う電子メ o : 別のフォルダへの移重丿卩ークを付ける i : 電子メールの取得 ための draft モードに入ってから、 draft モード内のコマ 電子メールを出す場合には、ます電子メールを作成する などのコマンドを使います。 O : フォルダ内の電子メールを整頓する g : カレントフォルダを移動ける 除 ) をおこなう ) x : マークを処理する ( 実際に電子メールの整理 ( 移動削 を付ける d : 電子メールに削除 ( + trash フォルダに移す ) マーク w : 新しい電子メールを作成するために draft モードに draft モードに入るガ去は 3 つあります。 ンドを利用してメールを作成します。 140 入る a : 電子メールの返信を作成するために draft モードに入 る ( 引用なし ) A : 電子メールの返信を作成するために draft モードに入 る ( 引用あり ) draft モードに入ってからは、 c-c c-i : 電子メールに署名を挿入する 1 UNIX MAGAZINE 1999.10 2 Emacs での man にあたるイ新虍です。 1 署名ファイル ()/ ・ signature) をさきに作っておく必要があります。 まで書いてから TAB キーを押すと、 From : yuzuko の From: 行に もので、たとえば電子メールを書こうとしたときにヘッダ に補ってくれる 途中まで書いて TAB を入力すると、残りの部分を自重加勺 完機能とは、 が、 draft モードでのヘッダの循環的補完機能です。補 がたくさんあります。私がとくに便利だと思っているの も、、知って使いこなすことができればとても便利な機能 " 「困ることはない」と書きましたが、 Mew にはこのはかに From: アドレスの補完 よいでしよう。 ます。ほかに分からないことカ咄てきたらⅲ f 。 2 を見ると です。これだけ意えておけは、ます困ることはないと思い 私か現在ふつうに使うのは上記のコマンドでほはすべて があります。 r : 電子メールを再送付する 刊 : 電子メールの再編集 ードでの、 はかによく利用するコマンドとしては、 summary モ になります。 C-c C-q : 作成中の電子メールを破棄する C-c C-c : 電子メールを送る する C-c C-m : テンプレートから実際の MIME 構造を作成 C-c C-a : MIME 形式の添付ファイルを付けるモードに
マルチ OS 工ミュレータ VMware 図 45 2 つのネットワークに 組織内ネットワーク eth0 ルータとして 同じネットワーク・アドレスを使用 図 47 2 つの Bridged ネットワークに 組織内ネットワーク 同じネットワーク ブリッジとして動作 アドレスを使用 vmnetl VMware ブリッジとして動作 vmnet0 Brid ed ネットワーク Host - on Ⅳネ冫 = 尸 ? ーク 仮想 PC ロ VMwa 「 e による ルータとして動作 eth0 ルータとして動作 組織内ネットワーク 図 46 2 つの Host-only ネットワークに 異なるネットワーク・アドレスを使用 vmnet0 e 物 0 ブリッジ として動作 vmnet2 ethl ロ VMware による 仮想 PC vmnetl VMware vmnet2 192.168.255.0 / 24 ロ VMware による 仮想 PC 172.16.70.0 / 24 コマンド、、 ifconfig -a" を実行すると、 vmnet0 から vmnet3 まて表示される場合と、 vmnet() と vmnetl し カ俵示されない場合があるようです。カーネルのバージョ ンの違いによるのかもしれませんが、よく分かりません。 でも、 vmnet() から vmnet3 まであるのはたしかです。 これまで vmnetO は Bridged ネットワーク用、 vm- netl は Host-only ネットワーク用と説明してきました。 vmnet2 と vmnet3 に関しては、ユーサーが自由に成疋 できます。 たとえば 192.168.255.0 / 24 のアドレスをもっ反想ネッ トワークを作り、 vmnet2 を接続するには次のコマンドを 実行します。 # ifconfig vmnet2 inet 192 .168.255.1 netmask 255 .255 . 255.0 # route add —net 192.168.255.0 netmask 255 . 255.255.0 dev vmnet2 ifconfig -a" コマンドを実行したときに vmnet2 が表示 されなかった場合は、次に説明する VMware の設定をさ UNIX MAGAZINE 1999.10 同じネットワーク . / アドレスを使用 VMware 組織内ネットワーク きにおこないます。そして、 [Power On] ボタンをクリッ クし、すぐに [PowerOff] ボタンをクリックします。す ると、ネットワーク・インターフェイス vmnet2 か現れ るはずです。 次に、イ反想 PC をこのネットワークに接続するために、 設定ファイルを以下のように編集します。 ethernetO. present = TRUE ethernetO. connectionType = hostOnIy ethernetl . present = TRUE ethernetl . connectionType custom" " /dev/vmnet2" ethernet 1 . vnet 編集カ鮗ったらゲスト OS を立ち一 E げます。このとき、 ゲスト OS とイ瓦想ネットワークとの関係は図 46 のように なります。 2 つの Bridged ネットワーク Bridged ネットワークも 2 つ作ってみましよう。 VMware のなかにイ瓦想ネットワークを作り、 vmnet2 をこれに接続します。 vmnet2 と ethl のあいだをプリッ ジでつなぐには、次のコマンドを実行します。 # vmnet-bridge /dev/vmnet2 ethl 次に、イ反想 PC をこのネットワークに接続するために、 設定ファイルを以下のように編集します。 ethernetO. connectionType = "bridged" ethernet0 ・ present = TRUE ethernetl ethernet 1 . vnet ethernetl ・ present = TRUE . connectionType custom" "/dev/vmnet2" 49
・ ookshelf 『 PerI/Tk デスクトップリファレンス』 『 DNS & BIND 第 3 版』 ・ paul Albitz 、 Cricket Liu 共著 ・高田広章、小島育夫監訳・小舘光正訳 ・オライリー・ジャパン ・ B5 判変型、 557 ページ ・ 5 , 000 円 ・ 1999 年 6 月 3 日 DNS & 羲 BIND 第 3 版 ・ Stephen Lidie 著 ・日本ルーセント・テクノロジー訳 ・オライリー・ジャパン ・ A5 判変型、 101 ページ ・ 900 円 ・ 1999 年 7 月 30 日 OR 印 . LY ・ PerIPfk をストフリフ′レンス DNS の動作原理と B Ⅸ D ( おもに 8.1.2 ) の運用技術を解 説。 DNS の仕組み、ドメインの開設までに必要な作業、ホ ストの設定、ドメインの運用と拡張、サブドメインの作成 方法、セキュリティ、 nslookup 、デバッグ、トラブル・ シューティング、リゾルバルーチンを用いたプログラミン GUI 作成のための Perl の拡張である Per レ Tk について、 ウィジェットや変数などの基本的な内容から、コールバッ ク関数、ジオメトリ管理、バインディング、イベント、ウィ ンドウ管理などの GUI 関連の概念を解説している。複合 ウイジェット、フォント、イメージの生成と操作コマンド についても触れている。 『 Python デスクトップリファレンス』 グなどをとりあげている。 『 Gimp バーフェクトガイド』 ・ Michael J. Hammel 著 ・豊福剛訳 エムティエヌコーポレーション ・ B5 判変型、 359 ページ ・ 2 , 800 円 ・ 1999 年 7 月 11 日 ハーフェクト GImp ・ Mark Lutz 著 ・飯坂剛ー監訳・金森玲子訳 ・オライリー・ジャパン ・ A5 判変型、 78 ページ ・ 900 円 ・ 1999 年 8 月 5 日 Python スクト : ′プリつ′レン 1 画像処理ソフトウェア GIMP (GNU lmage Manipulation Program ) の使い方を画像処理の基礎知識とともに解説。 リリース 1.0. x が対象。ウインドウ、ツールポックス、選 択範囲、レイヤーとチャンネル、色と文字、描画とペイン ト、変形、グラデーション、スキャニングと印刷などの章 に分かれる。 『 GNU Emacs デスクトップリファレンス Python の文とタイプ、組込み関数、共有ライプラリ・ モジュールなどについてまとめている。 Python リリース 1.5.1 以上が対象。コマンド行オプション、環境変数、組込 みタイプと演算子、文と構文、名前空間とスコープの規 則、オプジェクト指向プログラミング、組込み関数 / 例外 / 属性などの 15 章に分かれる。 『 TcI/Tk デスクトップリファレンス』 ・ Debra Cameron 著 ・日本ルーセント・テクノロジー訳 ・オライリー・ジャパン ・ A5 判変型、 55 ページ ・ 650 円 ・ 1999 年 6 月 14 日 GNUv Emacs 第スクト′プリフ珮・ンス ⅱ、・・■いを・をに・ま ・ paul Raines 著 ・須栗歩人監訳・日本ルーセント・テクノロシー訳 ・オライリー・ジャパン ・ A5 判変型、 97 ページ ・ 900 円 ・ 1999 年 7 月 30 日 cl/Tk 文クト , リフ , レンス 0 飛 E に LY ・ GNU Emacs 20.2 の各種コマンドや操作を、ファイル編 集、検索と置換、バッフアとウインドウ、作業環境、電子 メールと NetNews 、テキストのフォーマット / マークアッ プ、マクロなどの項目ごとにまとめている。カスタマイズ やプログラミング・コマンド、パージョン管理、オンライ ン・ヘルプについても紹介。 UNIX MAGAZINE 1999.10 fTcl/Tk ⅲ a Nutshell 』 (O'Reilly & Associates) で解説さ れている Tc レ Tk 関連の用語をまとめている。基本的な TcI の言語構成、 TcI と Tk のコマンド、 Tk ウイジェット について、それぞれオプションとともに説明している。 TcI と Tk のバージョン 8.0 が対象。 159