SunOS - みる会図書館


検索対象: UNIX MAGAZINE 1995年3月号
35件見つかりました。

1. UNIX MAGAZINE 1995年3月号

S / KEY のインストール S/KEY は BeIIcore からリリースされていますが、 のパッケージはリトル・エンディアンの言算機ではうまく いかないとか、 make install か変だなどのさまざまな問 題があるようです。そこで、オランダの Wietse Venema 氏が、 BeIIcore の S/KEY をもとに作りあげた S/KEY や各種デーモンのパッケージである logdaemon を紹介す ることにします。現在のバージョンは 4.6 であり、リス ト 2 のサイトから入手できます。 入手できたら、展開してディレクトリを移動します。 % gunzip 10gdaemon—4.6. tar. gz % tar xvf Iogdaemon—4.6. tar % cd 10gdaemon—4.6 ここで README をよく読みましよう。コマンドやデ ーモンは、各サプディレクトリに置かれています。 make は単純で、引数に OS 名を与えるだけです。トップディ レクトリでたんに make とすると、 # make make sunos4 sunos5 u1trix4 hpux freebsd * * * Error code 1 make : Fata1 error : Command failed for のように表示されますから、これから OS 名を選びます。 こでは、 SunOS 4. x にインストールします。引数は * * * Error code 1 して止まってしまいます。 % make sunos4 sunos4 です。 すると、各ディレクトリにあるコマンドやデーモンをコ keysu 、 10g ⅲ、およびデーモンである ftpd は、こまで logdaemon のコマンドである keyinit 、 key 、 keyinfo 、 ために起こります。しかし、今回の S/KEY に脚連する るために必要な libwrap. a がインストールされていない これは、 logdaemon 中の rlogind などをコンパイルす make : Fata1 error : Command failed for UNIX MAGAZINE 1995.3 て無事コンパイルできています。 連載 / 転ばぬ先のセキュリティー⑩ リスト 2 logdaemon の入手先 ンパイルしようとしますが、次のように途中でエラーを出 ftp : //ftp.aist—nara ・ ac ・ jp/pub/Security/t001s/10gdaemon/10gdaemon—4.6. tar ・ gz 次にインストールですが、トップディレクトリで make install としてもだめてす。 Makefile には、 install のため のルールが定められていません。これは、コマンドやデー モンのインストール先が OS によってまちまちなので、 まめに手でインストールせよということなのでしよう。 ます、 key 、 keyinfo 、 keyinit をインストールします。 サプディレクトリ skey に移動して、ルートの権限で make install と入力してください。 % su # cd skey # make install cp key keyinfo keyinit /usr/local/bin 次に login の置換えです。ます、、 which login" など として、 I 。 gin が置かれているディレクトリを探します 9 SunOS 4. x では、 # which login /bin/login のように / bin に置かれています。いきなり置き換えて 失敗すると二度とログインできなくなるので、入替え前 に S / KEY でログインできるかテストします。ルートで keyinit を実行し、 S/KEY カ硬えるようにします。 # /usr/local/bin/keyinit Adding て 00t : Reminder ー On1y use this method if you are If you are using telnet or て 10gi Ⅱ exit with keyinit —s. Enter secret passvord : Again secret passvord : ID root s/key is 99 d039061 SEE COCA TIDY RAKE BLOW WIN ここでシーケンス 99 で key を実行して、正しく使い捨 てパスワードを発行するかを確かめます。 # /usr/local/bin/key 99 d039061 Reminder ー DO not use this program while Enter secret password : SEE COCA TIDY RAKE BLOW WIN ちゃんと一致するようです。次の I 。 g ⅲのために ケンス 98 の使し鱠てパスワードを計算します。 ン一 123

2. UNIX MAGAZINE 1995年3月号

連載 / プログラマー入門ー② 表 3 SunOS の ps の項目の 項目 UID PPID CP PRI NI SZ RS S プロセスの状態を示すフラグ プロセスのオーナーのユーサー ID 親プロセスのプロセス番号 スケジューリングて使用する値 プロセスのメモリ上のサイズ プロセスサイズ プロセスの優先度を指定する値 (NICE イ間 プロセスの優先度 WCHAN プロセスカ寺っているイベント 表 4 Solaris の ps の項目の 項目 UID PID PPID P RI NI ADDR SZ WCHAN プロセスの状態を示すフラグ プロセスの状態 プロセスのオーナーのユーサー ID プロセス番号 親プロセスのプロセス番号 CPU の使用率 プロセスの優先度 プロセスカ盲寺っているイベント プロセスサイズ プロセスのメモリアドレス プロセスの優先度を指定する値 (NICE 仙 フラク F の意味 RUN 状態とか WAIT 状態のような大巴な識別より も詳しい情報を得たいときには、フラグの F の項目を参考 にします。フラグ F は 16 進数で表した直で、プロセス か特定の状態にあるときに対応するピットを立てます。 たとえば、 SunOS で SunView のウインドウをロック しているときには、上から 2 番目のピットが立ち、新し く作ったプロセスに魂を入れる exec システムコールの処 理か完了していれば、上から 3 番目のピットが立ちます。 同じような調子で、フラグ F が 30 くらいの状態を表現し ます。 フラグ F は、 UNIX システムや OS の内部実装に依存 した状態を表示することもあります。使用しているシステ ムについて詳しい知識がなければ、すべてを理解するのは 難しいでしよう。とはいえ、フラグ F の意味を読み取る ために、付け焼き刃でシステムの勉強をするのもすこし無 理があります。よく分からないときには、ほかのプロセス のフラグとくらべて、、怪しそうな " フラグを重点的に調べ てみることをお勧めします。 フラグ F カワ。ロセスのどんな状態を表しているかは、 OS に依存します。たとえば、 Solaris のフラグ F は 6 不頁の状態を表すだけで、 SunOS にくらべてかなり、、雑 64 な ' う嶽頁になっています。田についてはマニュアルを参 WCHAN の意味 考にしてください。 UNIX MAGAZINE 1995.3 異様に里が遅いとき うべきです。 ムが異様に遅いなら、その原因はほかのところにあると思 でも、よそのデモで見る速度にくらべて目の前のシステ す。 UNIX より速度の面で効率的なシステムもあると思いま れば、余分な処理のぶんだけ仮想記慮は遅いでしよう。 たしかに実メモリだけで動作するシステムにくらべ いませんか。 のだとか信しこんで、処理速度の遅さを我慢している人は 仮想記慮だから遅いのだとか、 UNIX は効率が悪いも しましよう。 ど異様に処理か遅い状況の話をして、今回の締めくくりと ps の説明をしたついでに、ハングアップではないけれ かのプロセスと見くらべて想像してください ( 図 6 ) 。 しまうので、 Wait Channel のアドレスを発見するか、は Solaris では残念ながら WCHAN は数値で表示されて コールを知っている人なら容易に想像がっくはすです。 I/O イベント待ちを表していますが、 select() システム Ⅵ℃ HAN の項目が、、 select" になっています。これは たとえば、図 5 の inetd デーモン・プログラムは、 す。 シンポルで表小されているとなんとなく見当がつくからで の意味の理解にもシステムについての知識が必要ですが、 ルを使うように指定するはうがよいでしよう。 WCHAN SunOS で WCHAN を表示させるときには、シンポ してくれます。 ンポルで表小しますが、 ps ーⅡ 1 を実行すると数値て表示 SunOS では ps ー 1 を実行すると WCHAN の値をシ 数あるいはシンポルて表現するかの違いがあります。 ドの引数によって、イベントに対応するアドレスを 16 進 項目の表示は OS によって異なります。また、 ps コマン のプロセスカ畤っているイベントを表します。 WCHAN Ⅵ℃ HAN は、、Ⅵ it CHANnel" の略で、 WAIT 絖態

3. UNIX MAGAZINE 1995年3月号

連載 / プログラマー入門ー② 図 4 SunOS の ps を引数 I て行した結果 0 : 00 ps 1 % ps 1 F UID PID 20488200 168 19215 20008020 168 19231 20000001 168 19290 19214 19215 PPID CP PRI NI SZ 0 15 0 25 19279 29 32 0 184 02012 0 220 RS S WCHAN 0 kernelma 476 0 STAT TT IW TW R pO pO pO TIME COMMAND 0 : 00 —csh (csh) emacs 0 : 22 注意してはしいのは、 IDLE 状態にあるからといって UNIX MAGAZINE 1995.3 図 1 の情報からは、無限ループなのか、処理に長い時間 の表示は RUN 状態ですが無ルレープに陥っています。 返してしまいユーサーの入力に反芯できないときには、 ps るとはかぎりません。プログラムのある範囲を無限に繰り ところで、 RUN 状態だからといって正常に動作してい プしているのではないのが分かります。 なっているので、すくなくとも WAIT 状態でハングアッ ないですれもちろん、 ps で表示してみれは RUN 状態に 何も反芯してくれないとハングアップしたと思っても仕方 っていただけで、正常に重堺乍してはいたのです。 3 分以 -. ヒ しつのところ例に挙げたプログラムは処理に時間がかか えます。 ことが多いので、いかにもハングアップしているようにみ 懸叩夫行しているあいだはユーサーの入力を受け付けない もあります。このようなプログラムは、自分の仕事を一所 大なプログラムを読み込むのに 1 時間かかったという経験 分かかったことがありました。また、 0 版のデバッガで巨 データベースからある条件でデータを検索するのに 30 場合にはなおさらです。 ムで、処理にどのくらい時間がかかるのか予想がっかない 借りても困難な乍業てす。とくに初めて実行するプログラ 無限ループと正常な処理を見分けるのは、 ps の助けを ングアップとは区別して考えたほうがよいでしよう。 する景や原因の追究ガ去が異なるため、処理カ阯まるハ 無ルレープもハングアップの一種ですが、システムに対 無限ループ でいるとプロセスは IDLE 状態になります。 に、ユーサーの入力を待っている状態で、何も入力しない ことがあります。たとえば、さきの図 1 の csh の例のよう ロセスが正常に動作しているときでも IDLE 状態になる つねにハングアップしているとはかぎらないことです。プ がかかっているのかを判断できません。経験的に「こん なに時間がかかるはすがない」とか、ある処理カ鮗了して ューサーの入力を待っている状態のはずなのに RUN 状 態であるときは無ルレーフ。の可能性があります。 詳細なプロセス情報の表示 プロセスの状態 D 、 S 、 I などは、正常に処理が進んで いるときにも瞬間的に現れることがあるので、ハングアッ プしているかどうかの判断は、 十分長い日判日状態か変化しない ・入力をおこなっても状態か変化しない ことて市忍します。でも、これだけでは決め手に欠けるし、 無限ループの掛かりがありません。 プロセスの状態に関してより詳しく知りたいときには、 SunOS 、 SoIaris とも 1 オプションを指定して ps コマン ドを実行してください。 SunOS の ps コマンドは、オプ ション文字列の直前に ーを付けるのを省略することも できます。 SoIaris では、、一 " を付けなくてはなりません。 図 4 は SunOS で、 % ps 1 を実行した例です。 1 オプションを指定すると、情報の量が多くてコマンド 名がはとんど切れてしまいます。尻切れトンポが気に入ら ない方は、 1 行ぶんを長い表示にする引数もあわせて 指定してください。 図 4 は図 1 にくらべて、多くの項目が追加されています。 各項目カ俵す意味については表 3 を参照してください。 Solaris の ps ー 1 の実行結果については図 3 ですでに紹 介済みです。それぞれの項目の未を表 4 に示します。 ps の詳細な表示て鍵となるのは、プロセスの状態を表 すフラグの F とイベントを表す、、 WCHAN" です。 63

4. UNIX MAGAZINE 1995年3月号

連載 / 転ばぬ先のセキュリティー⑩ E ー 12 、、 Network Monitoring Attacks Update" など を参考に、事件の概要を説明します。 クラッカーが狙ったのは、 SunOS 4. x です。クラッ カーは TFTP 、 NIS 、および NFS のセキュリティ・ホー ルを利用して、 passwd ファイルを手に入れました。そし て、パスワード・クラックによって得られたログイン名と パスワードを使って遠隔の言 t 算機に侵入し、 SunOS 4. x のさまざまなセキュリティ・ホールを衝いてルートになり すましました。 ルートの牛讚雀を手に入れると、 sniffer というプログラ ムで Ethernet を盜聴しました。 SunOS には /dev/nit というネットワークを覗けるネットワーク・インターフェ イスがあります。 sniffer は /dev/nit を通して、新しく 開かれた telnet 、 rlogin 、および ftp セッションの : 頁 128 バイトを傍受したのです。通常このバイト列には、計 算機名、アカウント名、パスワードがあるので、 sniffer は これらを保存します。あとからクラッカーがこの言求を回 収すれは、侵入に利用する新しいアカウントがどっさり得 られるわけです。 さらに侵入の形跡を残さないために、侵入先でん sr / etc/in. telnetd と /bin/login を置き換えました。 のⅲ . telnetd には裏口があり、特定のガ去でログインす れば言求か残らないようになっていたのでしよう。またク ラッカーは、 sniffer の存在を隠すために、 /bin/ps を置 き換えました。この ps は、特定の名前のプロセスを表示 しないようになっていたようです。轤首から 1 カ月後に 発行された CIAC Advisory Notice E ー 12 は、実際にク ラッカーが不正に入手したアカウントは 100 , 000 を超え たと伝えています。 リプレイ攻撃 クラッキングの基本的な攻撃ガ去に、リプレイ攻撃があ ります。あらかしめある人やプロトコルなどの一 -- 漣の物カ をしっと観察し、あとて伺しを真似て生して ) 攻 撃を試みることです。「アリババと 40 人の盗賊」で、ア リババか盜賊の、、開けゴマ " という呪文を真似て扉を開け たのは、まさにリプレイ攻撃です。 残念ながら現在の UNIX の認証欟冓であるパスワード 2 、 s ⅲ『はクンクン嗅ぎまわるといナ御てす。 UNIX MAGAZINE 1995.3 は、このリプレイ攻撃に弱いのです。丿鬲の言算機 , 、、 tel- net することを考えてみます。コネクションか張られた らログイン名を入力し、次にパスワードを打ち込みます。 このときログイン名とパスワードは入力されたままのかた ちでネットワークを流れます。 telnet を繰り返すたびに、 ( パスワードを変更しないかぎり ) 同しログイン名とパス ワードか送信されます。クラッカーは途中の経路て渺て いて、あとから同し言算機に同しログイン名とパスワード を入力すれば簡単に侵入できるわけです。 パスワードを暗号化したらどうでしよう。しかし、ログ インのたびに異なるように暗号化されなければ、けっきょ くなんの改善にもなりません。クラッカーは音号化された パスワードの内容を理解できなくても、暗号化文字列をそ のまま計算機に送り付けれは侵入できてしまいます。 こう考えると、リプレイ攻撃を防ぐには以下の 2 つの条 件を満たす必要があります。 ・パスワードは平文のままネットワークに流さない。 暗号化などでパスワードをほかの文字列に変換してから 送る場合、毎回異なる文字列にする。 ネットワークを流れる認証↑青報は使し鱠てで、けして再 利用できてはなりません。 S/KEY は、使し寸てパスワー ドを実現する唯一フリーのソフトウェアです。 S/KEY の仕組み S/KEY は、 BeIIcore で実装された使い捨てパスワー ド・システムの総称であり、機請報がネットワークを流 れす、しかも保存されないという優れた欟冓を提供してい ます。 S/KEY の開発から 3 年カを過しましたが、まだセ キュリティ・ホールは発見されていません。ここでは、文 献 [ 1 ] を参考にしながら S/KEY のイはみを紹介します。 概要 実際のログインの手順をみてみましよう。ログイン先 のサーバーを dontaku 、ログイン元のクライアントを login: SunOS UNIX (dontaku) yuki% telnet dontaku yuki 、ログインの手段は telnet を用います。 115

5. UNIX MAGAZINE 1995年3月号

連載 / プログラマー入門ー② つまりざっくばらんにいってしまえば、コアダンプした り、ばったり止まってしまったり、期待どおりあるいは マニュアルどおりに動いてくれないことです。 原因のはうも、プログラムに潜むバグをはしめいろいろ と考えられます。たとえは、さまざまなもののなかでも、 ・インストールミス ・実行環境の不備 ・資源不足 などはユーサー側でなんとかできる原因たちです。インス トールミスで必要なファイルが足りないようなときは原因 がみつけやすいのですが、実彳丁環境にかかわる場合や、メ モリ領域などの計算機資源カ坏足して動作しない場合は、 なかなか原因カ鰍めません。 最後は原因に合わせた解決策を考えることになります が、その対処法はプログラムごとに違い、一ヨ勺な回答は ありません。せいぜい「メモリが足りなけれは増設メモリ をつけなさい」程度の答しか出ません。そこで、今回は原 因を突き止めるところまでをとりあげます。解決策の紹介 は「ごめんなさい」させてください。 症状を診ただけで原因が分かるなら話は簡単なのです が、一ヨ殳に何か、、ますい " 現象か現れたからといって、最 初から原因を擱則するのは無理でしよう。もちろん、世の 中にはびつくりするくらい勘がよくて、何をヒントにした のか不明ながら正しい原因にたどり着く人もいます。 しかし、普通の人はそんな無茶なことをしてはいけませ ん。首に、 1. 問題となる動胙をイ見させ 2. 症状から原因を推測し 3. 推測した原因を検証する という手順を踏んでください。 手順のなかで一一番難しいのは、症状から原因を擱則する 段階です。ソースファイルがあればテンヾッガを利用して原 因を突き止めることもできますが、いわゆる市販のプログ ラムではテンヾッガに頼れません。 でも、間題の追究に使えるツールはいわゆる開発用のデ バッカ顴はかりではありません。 UNIX には、プログラ ムの動きを教えてくれるツール類がいくつか用意されてい ます。 UNIX MAGAZINE 1995.3 「うーん、でも俺、記慮力が悪くっていろんなツールを憶 えきれないんだ」 なんて方もためらいを捨ててください。憶えなくてはな らないツールは、以下のものだけです。 ・ PS ・ strings ・ nrn ・ trace これらのツールは多くの情報を提供してくれます。その うえ、テンヾッガのように極端に使い方か難しいということ もありません。ただし、使い方は簡単ですが与えられた情 報の意味を読み取るのは難しいかもしれません。 さらにこれらのツールを使うときには、 OS の不頁やバ ージョン、べンダーによる違いにも留意しなくてはなりま せん。簡単で彳殳立つツールはど、バージョンアップて機 能が追加され、べンダーの手が加えられています。また、 BSD と SystemV ではコマンド名が異なるものもありま す。 以降、 BSD および SystemV の例として、 Sun Mi- crosystems の 2 不重業頁の OS 、 SunOS 4. x ( 以下、 SunOS と略 ) と SunOS 5. x 似ード、 SoIaris と略 ) を使います。 はかの OS の場合には、同し名前、同じ目的のツールでも すこしすつ重川乍やイ士オゞ違うので、かならす OS のマニュ アルで重川を石忍して使ってください。 プロセスの状態 プログラムの異常な状態のひとつに、、ハングアップ " が あります。ハングアップとはプロセスの処理が進まなく なる現象のことですが、このときのプロセスの状態はひと とおりではありません。ハングアップについて説明する前 に、 : 楚知識としてプロセスの状態についてお話ししまし があります。 2. 止まっている 1. 走っている プロセスの状態を大きくう頁すると、 59

6. UNIX MAGAZINE 1995年3月号

連載 / プログラマー入門ー② 図 3 Solaris の ps を引数 -1 て行した結果 ー 1 % ps F S UID PID PPID C PRI NI ADDR 168 19215 19213 80 1 20 ff310800 WCHAN TTY 417 ff3109C8 SZ pts/O ページ待ち TIME COMD 0 : 02 csh SunOS では、 ps の表示を見るとデバイスに引っ掛か ったことが簡単に分かるので、ハングアップの原因追究と いう見地からはたちのよいトラブルといえるでしよう。で も、そク男状はなかなかハードです。あるプロセスがテンヾ イスに引っ掛かると、他のプロセスが同じテパイスにアク セスしようとしても失敗します。しかも割込みカ俐かない ので、いつものように C を叩いてもプロセスカ鮗了して くれるとはかぎりません。 プロセスを終了するためのあらゆる手段を尽くしたのに どうしてもハングアッフ。から抜けられないときには、デバ ・原を入れなおす ・職原を切る ・リセットする イスに里した装置を、 62 るノ、一ドディスクの原をいきなり切ってはいけません。 4 ファイルの言もムみで、引っ掛かっている " からといって、皆カ硬ってい ことも記意しておいてください。 状態表示が D です。このような例タ粕勺なプロセスがある swapper と pagedaemon は、正常に重川していても はめったにありません。 ログラムがテンヾイスに引っ掛かってハングアップすること 組み込まれているので、実際に世の中に出まわっているプ ていは一定時間か経過するとデバイスを解放する仕組みが っている場合にはあまり心配する必要はありません。たい 難しいと感じたかもしれませんが、普通のプログラムを使 割込み不可の処理のハングアップを回復するのはとても ください 4 か落ちたりするので、それなりの覚唐をもっておこなって メッセージを表示し続けたり、最悪の場合には OS 自体 によっては言算機か動いている最中に装置を触るとエラー りするとたまたま回復することもあります。ただし、 OS などを試してみるのもよいでしよう。原を入れなおした ps の状態表示が、、 P " のときにはページ待ちの状態を表 しています。 プロセスを走らせるために必要なプログラムは、、ペー ジ " という単位で仮想記意 ( ディスク ) からメモリへロー ドしますが、この処理カ鮗了するまではページ待ちの状態 (P) になります。 ページ待ちの状態は十分なメモリがあるときにはま可寺間 で解消しますが、メモリか不足しているとメモリの割り当 てに日判肋ゞかかり、プロセスの実行か遅くなります。メモ リか不足したときについてはのちほど説明します。 SLEEP 状態と IDLE 状態 SunOS の ps の表示では割込み不可の処理とページ待 ち以外に、、 S " と、、 I " の 2 不鶤頁の WAIT 状態があり、 れらをそれぞれ SLEEP 状態、 IDLE 状態と表現します。 SunOS の SLEEP 状態と IDLE 状態の違いは、待って いる時間が短いか長いかによるもので、 WAIT になった 原因や状態による相違ではありません。特定の処理がいつ までも終らないときには、 SLEEP 状態の S から I へ移 行します。さらに、メモリが一ト分でない場合にはスワップ アウトされて、、 IW " に変わります。 ューザーが入力した直後のプロセスの状態が I や IW 、 つまり長い WAIT 状態にある場合も、ハングアップの兆 候と考えられます。 WAIT 状態のときにユーサーの入力 があると、それを処理するためにプロセスが RUN 状態 になるはずですが、 ps で RUN 状態か現れず、実際に入 力が央されなければ、ハングアップしていると判断して もよいでしよう。ハングアップしたあとで ps の表示を見 ても、いつからハングアップしているのか、その日判月を知 ることはできません。ハングアップのおおよその日月を知 るには、プログラムを起動してから頻繁に ps を実行して RUN 状態から WAIT 状態一多行するのを見張ってくだ UNIX MAGAZINE 1995.3

7. UNIX MAGAZINE 1995年3月号

連載 / プログラマー入門ー② 、、走っている態 " は RUN 状態 1 と表現し、必要な資源 を石呆して処理をテできる状態です。 マルチプロセス・システムである UNIX では、 1 個ま たは固の CPU を複数のプロセスで共有します。 RUN 状態のプロセスが CPU の数より多いときには、 CPU を 仲良く分けあわなくてはなりません。このイはみを簡単に 説明しておきます。 RUN 状態のプロセスは、キューに並べられています。 このキューは一級に、 run queue" と呼ばれます。ます、 キューの頁のプロセスを取り出しては CPU を割り当て て処理を実行します。ある程度処理を実行したプロセスは キューに戻さキュー上の次のプロセスに CPU を割 り当てます 2 。 ある瞬間をとって調べると RUN 状態のプロセスには、 実際に CPU を使用して処理を実行しているものとキュー 上で CPU の割当てを待っているものの 2 不頁があるこ とが分かります。たとえば、 Solaris の ps コマンドはこ の 2 不鶤頁の状態を区別していますが、 SunOS ではまとめ て RUN 状態と呼びます。 、、止まっている状態 " には、止まる動によって、 (a) STOP 状態 (b) WAIT 状態 (c) ZOMBIE 状態 があります。 STOP 状態は、 STOP シグナルを受け取ってプロセス が停止しています。たとえば、 *Z でプロセスをサスペン ドしたときや、テンヾッカでトレース中のときにこの状態に なります。 WAIT は、イベントの発生や特定の処理の終了を待っ ている状態です。たとえは、 ・プロセスの実行に必要な資原窈寉保を待っ ・ほかのプロセスとの通信カ鮗了するのを待つ ・ユーサーの入力を待つ などか挙げられます。 ZOMBIE はとても特殊な状態です。プロセスが終了 すると親プロセスにそのことを通知しますが、親プロセス 1 より寉に、 RunnabIe 耽態と見することもあります。 2 実際の CPU 割当ての処理は、プロセスの優立を考慮しておこなわ れるので、もうすこし複雑てす 60 図 1 SunOS の ps を引数なして行した結果 % ps PID TT STAT 19215 PO IW 19231 PO TW 19289 PO R TIME COMMAND 0 : 00 -csh (csh) 0 : 22 emacs 0 : 00 ps が通知を受け取るまでは子プロセスは死にきれないでいま す。これが ZOMBIE 態です。、、 ZOMBIE" なんてい かにも悪さをしそうな名前ですが、資源を解放しておとな しくしているプロセスなので実害はありません。 ハングアップ ハングアッフすると、最初は問題なく動いていたプログ ラムが、終了するわけでもなく途中でばったり止まって、 キーを叩いてもメニューを選んでも反応しなくなります。 こんなときには、何から詩・ヾたらよいのでしようか。 ハングアップはある意未では異常終了にくらべてお得で す。反芯しないとはいえプロセスがまだ生きているので、 ps コマンドで表示されるプロセスの状態からハングアッ フ。の茁妾の原因を知ることができます。たとえば、 ・資源不足 ・特定の絖態待ち ・無限ループ がおもな原因です。 ps コマンドを、暴走したプロセスを kill コマンドで強 匍了させるときにプロセス ID を調べるためのコマンド だと思っている方が多いかもしれません。 ps の本来の彳難リ は、プロセスのさまざまな情報を表小することなのです。 ps の出力例を見ながらハングアップについて説明しま す。 ps コマンド 図 1 は SunOS で ps コマンドを引数なしで実行した例 です。引数を指定しなければ、 ps コマンドを実行したユ ーサーの缶端末のプロセスに関する情報だけを表示しま す。 図 1 の PID 、 TT 、 STAT 、 TIME 、 COMMAND はそれぞオ プロセス ID 、制彳卸端暑 ( 、プロセスの : 伏態、プロセスか 1 肖 UNIX MAGAZINE 1995.3

8. UNIX MAGAZINE 1995年3月号

連載 / 転ばぬ先のセキュリティー① telnet 、 rlogin 、仕 p 、およびのちほど述べる keysu で用 いられる認証の方法か理解できたことになります。 key には一 n オプションがあり、複数の使い鱠てパスワ ードを一度に出力できます。 % key —n 5 96 d047388 Reminder ー DO not use this program while Enter secret passvord : 96 : 94 : 92 : これは、 key の % 予できる端末を持たすに出張する場合 FUSE LAND BULK MAP RUDE P IE 95 : FAKE SANK GILL GAM MOP COOK GUT SHOT VOID CUR LUSH GRAB 93 : GIRD MUCK WEAN LOW IVY SLEW SNUG GUS KEYS BOWL SENT CITE keys u Enter secret password: Reminder ー DO not use this program % key —n 5 'keyinfo' ー lp て などに役立ちます。印刷は、以下のようにすればよいでし while サーからルートへ su する例を示します。 捨てパスワードを入力することだけです。以下、一 - イ殳ュー keysu は S/KEY 対応の su です。 su との違いは使い % keysu s/key 92 Passvord on) ルートになるには、 ID が 0 のグループに入っている必 ログインを繰り返すと、だんだんシーケンスかってい echO : SHUN LOST FUEL FLAW BUSY BRIM d039061 (turning 要があります。 keyinit -s ドは計算できないので、けっきよく口グインできなくなり 返ってきます。このシーケンスに対する使し甘てパスワー 告が出ます。これを無視し続けると、シーケンス、一 1 " が きます。シーケンスカ戦り少なくなると、ログイン時に警 % login Warning ! Change s/key 2 d047388 SunOS Re1ease % login login : kazu Warning ! Change 120 s/key s/key passvord passvord S00 Ⅱ S00 Ⅱ s/key 1 d047388 Password : SunOS Re1ease % login login : kazu Warning ! Change s/key password soon s/key 0 d047388 Passvord : SunOS Re1ease UNIX MAGAZINE 1995.3 s/key access passvord: s/key 200 d0473800 Enter new key [default d0473800 ] : ーンキーを押します。 力してからリターンキーを押します。ここではたんにリタ し、ほかの文字列を指定するのであれば、その文字列を入 種です。デフォルトでよい場合はたんにリターンキーを押 次に種を訊いてきます。角括弧のなかがデフォルトの Enter new key [default d0473800 ] . Enter sequence count from 1 t0 9999 : 200 ます。 ケンスの大きさを要求しています。ここでは、 200 とし 6 個の単語が必要だというメッセージのあとで、シー Enter sequence count from 1 tO 9999 : Reminder you need the 6 english words from 01d key : d047388 Updat ing kazu : % keyinit —s ましよう。 ケンスや種を指定することが可能です。さっそく試してみ 起動すると、秘密のパスワードは要求されませんし、シー ンが用意されています。 -s オプション付きで keyinit を この間題を解決するために、 keyinit には一 s オプショ たいユーザーもいることでしよう。 れてしまいますが、 99 よりも大きなシーケンスに設定し す。 keyinit を実行するとシーケンスと種か勝手に決めら 警告カ咄た場合は、コンソールに行くことすら無理な話で し、いちいちコンソールまで行くのは不便です。出張先で すサーバーのコンソールまで行かねばなりません。しか あります。 keyinit を引数なしで実行する場合は、かなら 警告カ咄始めたら、 keyinit をふたたび実行する必喫が Passvord : s/key ー 1 d047388 Warning ! Change s/key password soon % login

9. UNIX MAGAZINE 1995年3月号

連載 / プログラマー入門ー② 表 1 プロセス状態のアルファベットの (SunOS) アルファベットプロセスの璉 TIME COMD ZOMBIE 状態 WAIT 状態 (IDLE 状態 ) WAIT 状態 (SLEEP 状態 ) WAIT 態 ( 割込み不可 ) WAIT 状態 ( ページ待ち ) STOP 状態 RUN 状態 図 2 Solaris の ps を引数なして実行した結果 % ps PID TTY 19215 pts/O 19231 pts/O 19289 pts/O 0 : 00 0 : 22 0 : 00 csh emacs PS 費した CPU 日糶 ] 、実行したコマンドを表しています。 UNIX MAGAZINE 1995.3 ワッフ或に ; 当させられることてす。 3 プロセスがメモリ上から追い出されて、ディスク上に石呆されているス を実行した例です。左から 2 番目の s の項目カワ。ロセス % ps ー 1 図 3 は Solaris で、 定します。 でプロセスの状態を表示するには、オプション、、一 1 " を指 スの状態が表示されていません。 Solaris の ps コマンド たコマンドを表しています。でも、図 2 には肝腎のプロセ ID 、制御端プロセスか鞘費した CPU 時間、実行し 例です。 PID 、 TTY 、 TIME 、 COMD はそれぞプロセス 図 2 は、 Solaris の ps コマンドを引数なしで実行した の働きをしますが、オプションや表カ訝彡式が異なります。 SystemV の ps コマンドも BSD の ps コマンドと同様 す。 スをサスペンドして STOP 状態にあることを表していま の、、 R " は実行中の RUN 状態、 emacs の、、 T " はプロセ WAIT 状態になっていることを表しています。また、 ps たとえば、図 1 の csh の I はユーサーの入力待ちで します。 は、そのプロセスがスワッフ。アウト 3 していること邑未 トの意味を表 1 に示します。 2 文字目に W があるときに 後ろに、 W " を付けて表します。 1 文字目のアルファベッ プロセス状態は 1 文字のアルファベットまたは、その 目してください。 ングアッフ。で脳むユーサーはプロセス状態 (STAT) に注 表 2 プロセス状態のアルファベットの意味 (Solaris) アルファベットプロセスの ZOMBIE 絖態 WAIT 状態 (IDLE 状態 ) WAIT 状態 (SLEEP 状態 ) WAIT 状態 (SXBRK 状態 ) STOP 状態 RUN 状態 (run queue にある状態 ) RUN 態 (CPU 上で実行中 ) になります。このような状態を方言で、、デバイスに引っ掛 スを無限に繰り返してしまうと、長時間 D の表示のまま テンヾイスを使用中にしてしまったり、デバイスへのアクセ グラムに問題があっていつまでも処理カ鮗了せす、特定の ーイ殳に割込み不可の処理は矢可寺間て終了しますが、プロ 態で実行します。 制笹切都合上、遅延や中断力きないので、割込み不可状 System) への読み書きは、タイミングやハードウェアの の処理、たとえばハードディスクや NFS(Network File 割込み不可の処理の終了を待っている状態です。ある種 とくに判別か簡単なのが SunOS で、、 D " と表示される、 です。 源の石呆やイベントを待ち続けて WAIT 状態になること ハングアップを起こしたプロセスの典型的な状態は、資 デパイスに引っ掛かる いては次に説明します。 、、割込み不可の WAIT 状態 " と、、ページ待ち状態 " につ る状態です。 SXBRK 状態は、メモリ領域の確保の終了を待ってい 割当てを待っている状態の 2 通りに区別しています。 て処理を実行している状態と、 run queue 上で CPU の Solaris では RUN 状態を、プロセスが CPU を使用し の 4 点に違いがあります。 ・ SXBRK 状態がある ・ページ待ち状態がない ・割込み不可の WAIT 状態がない ・ RUN 状態に 2 通りの区別がある 態の不頁に、 SunOS と上交すると、 Solaris の ps ではプロセス状 の状態を表し、その意味は表 2 のとおりです。 かった " と表現します。 61

10. UNIX MAGAZINE 1995年3月号

創夢からのお知らせ X イメージ操作ライプラリ XIFL ( ザイフル ) さまざまな画像データをワークステーション上で効率よく操作するための汎用イメージ操作ライ プラリです ■スキャナや画面からのイメージの取り込みから、ウインドウ表示、ファイルアクセス、イメージ操 作、フォーマット変換までのイメージ処理機能を提供。 ■ソースコード ( ライプラリ、サンプルプログラム ) と詳細な解説書も提供。 ・高度にモジュール化されており、汎用性、移植性、拡張性が高い 動作文寸象機不重 Sun Microsystems SPARCstation シリース 動作対象 OS : SunOS 4.1. x ( 発売中 ) Solaris 2. x ( 発売予定 ) 動作対象スキャナ : EPSON GT ー 6000 または GT - 6500 ( SCS 凵 / F ) ※詳細についてはお間い合わせ下さい ・ X11 日 5 日本語マニュアル 好評発売中 X コンソーシアムからリリースされた英文 のドキュメントを、そのままわかりやすい 日本語に翻訳しました ・テクニカル・ドキュメント・シリーズ X ⅱ b ーー C 言語 X インタフェース 9 , 800 円 X ツールキット・イントリンシクス ーー C 言語インタフェース 7 , 600 円 アテナ・ウィジット・セット - ー C 言語インタフェース 6 , 700 円 ライプラリ・リファレンス・マニュア ) レ 7 , 500 円 コマンド・リファレンス・マニュアノレ 7 , 500 円 ・技術資料シリーズ X 1 1 R 5 リリース・ノート 2 , 060 円 X11R5 実装と移植 20 , 600 円 X11R5 プロトコル集 27 , 810 円 X 1 1 R 5 規約集 20 , 600 円 X 1 1 R 5 工クステンション 20 , 600 円 ■ X11R5 日本語オンライン・マニュアル ライプラリ・リファレンス・マニュア ) レとコマン ド・リファレンス・マニュアノレを LJN ー X の man コマンドで参照できる形式のファイルに 価格 . 97 , 000 円 しました ・フリーソフトウェア・ サポートサービス始めました。 本サービスでは、当社で日常的に使用しているフリーソフト ウェアのソース、および安定して動作する即実行可能なバイ ナリのキットをご用意するとともに、インストール、環境設定、使 用方法などに関する半年間に渡る Q & A サービスをご提供 いたします現在は、以ドのキットをサポートいたしております 対象アーキテクチャ : sun4m および sun4c 対象 OS:SunOS 4.1 .2 / JLE 1 . 1.2 対応プリンタ :PostScript プリンター()灯 M ℃ RO 凵 NE シリーズなど ) 凵 PS プリンタ—(canon LASER SHOT シリーズなど ) ■ユーティリテイソフトソース / / ヾイナリ・キット GNIJ の主なソフトウェアおよびその他の便利なソフトウェアを収録しま した。日本語か扱える sed , grep, gawk, perl や wnn と Canna の両方 か使える Nemacs など。 ・ X11R5 ソース / バイナリ・キット M ー T か配布しているソースの CORE 全部と CONT B の一部、その 他 x ウインドウ用フリーソフトウェアに、最新の / くッチ ( レベル 25 まで ) を 当てています ■日本語 ' I ソース / バイナリ・キット オリジナルの英語版 ' I び、 ASCII 日本語 ' I . NTT.VIbX と、それに関連するさまざまなツール群を収めました。 日本語対応文書整形システム 「創夢 D ー T 日 OF 円あります。 動作環境、 OS. Sun SPARCstation シリーズ SunOS 4.1.2 / JLE 1.1.2 出力機器・ p 。 stscript プリンター ( OKI M ℃ RO 凵 NE シリースなど ) 凵 PS プリンター (canon LASER SHOT シリーズなど ) 価格 . 260 , 000 円 ( cpu 一台あたり ) * 会社名および商品名は各社の商標または登録商標です。 * UN Ⅸは X / Open カンノヾニ ーリミテッドがライセンスしている米国ならびに他の国における登録商標です。 * 書籍以外の商品には別途消費税がかかります。 * ソフトウェアの配布メディアは Q ℃ー 150 形式 1 / 4inch カートリッジテープです。 ・資料請求先 〒 1 51 東京都渋谷区幡ヶ谷 1 ー 29 ー 9 日星ビル 株式会社 TEL : 03 ( 5453 ) 1251 イや・ FAX : 03 ( 5453 ) 1252 ・営業 / IJN ー x 技術者 / テクニ カルライタ随時募集中 / 詳細はお電話で お問い合わせください。 夢 創 資料請求 No. 82