ファイル - みる会図書館


検索対象: UNIX MAGAZINE 1992年2月号
94件見つかりました。

1. UNIX MAGAZINE 1992年2月号

連載 / ℃ ADVISOR—朝 つまり、あなた方窈是案には read-only と書込み可能 結局、私が 1 つの問題を書き漏らしたことを孑商した な文字列の両方でイリな点があり、そのどちらにも有利な 人は誰もいなかった。それは、ごくありきたりの例題を 点はないのである。 移植不可能にしてしまう外部変数の問題だ。多くの C コ ンパイラでは、イニシャライザなしのグローバル変数に "JournaI 0f C L anguage TransIation ”の Rex Jaeschke 氏は、キ刮瓜と言叫面の順に関する私の話に欠けて extern キーワードは不要である。たとえば、多数のソー いた箇所を孑商してくれた。 スファイルにインクルードされているヘッダファイルの 次のような例を考えてみよう。 なかでは、次のように旦言できる。 (f 1 ( ) + f2 ( ) ) + f 3 ( ) int Num—gerbi1s ; ローダがすべてのファイルを一緒にするとき、明確に こで、関数 fl ( ) 、 f2 ( ) 、 f3 ( ) の戻り値を、それぞ 初期化された宣言がないと、ローダは 0 に初期化された れ巧 1 、 2 、 3 とする。 変数を作りだす。これとは対照的にヘッダ中の、 K&R C でも ANSI C でも、関数は任意の順て呼び出 される可能生がある。評価の順には、なんの保証もないの extern int Num—gerbi1s ; である。しかし、 ANSI C では関数呼出しによる戻り値 は、自身で割り当てられる場所を占めるようなことはな に対する操作順は括弧によってイ焉正されている。すなわ ち巧、は、その果が巧 , に足される前に巧。に足され い ANSI では、異なるファイル中で同し変数の複数の非 ると保証されているのである。しかし、 K&R C ではこ extern 旦言をおこなうことは、規則違反になる。ヘッダ うはならない。 ファイルは extern バージョンを含む必要があり、ただ このことは式を評価する際の、アンダー / オーバーフロ 1 つのソースファイルのどこかで、明確にあるいは暗に初 ーを避けるうえでたいへん重要である。たとえは前出の 期化されている必要がある。 式で fl ( ) の戻り値が負の数、 f2() の戻り値か正の数で あった場合、これらを足して式がオ→ヾーフローするか、 今回はちょっと短いが、これで終りである。じつは、話 しないかでは大違いだろう。 2 、 3 がたいへん大きな のネタがなくなってしまったのだ。皆さんには、今後も 正の数で、 1 がある程度大きな負の数であるとき、 2 この欄で ANSI C についての記事を書くと約束しておこ と 3 をさきに足すとオーバーフローするかもしれない。 う。ただし、目下のところは編集者の隠れ家を襲って私の 逆に巧 1 と 2 をさきに足せは、オーバーフローしない 祖母を取り戻さなくてはならない。この落し前はかならす かもしれない。 つけるからな。待ってろよ。 ANSI C のプリプロセッサについての記事のなかで、 私は ANSI が System V のインクルード・ファイルの 探索ルールに合わせようとしていると書いた。これに対し 現在、 fA C Users Guide to ANSI C ー - C のユーサーかま可で て、 SDRC の Larry Jones と OSF の MichaeI Miss- ANSI C の達人になるための事実、ポインタ、ヒント、卓見について』 ( 仮 題 ) という本を中。 ner の両氏は、和がかなり旧い標準のコピーを使っている のではないかと孑商してくれた。 「 ANSI C Mail Baggette 」 UNIX REVIEW 1991 年 1 月号より 彼らの孑商で、私は思い出した。そう、探索は外部環 境への依存度が高いため、 ANSI はいかなる探索の振舞 いも組織化しないと決定したのだった。たしかに、 Sys- temV の規則はいくっかの発展型において重大な問題を 引き起こしかねない。その点ではすこしばかり嬉しいの だが、ふたたびこの部分の煢力はまったくあてにならなく なってしまった ( これは、あまり楽しいことではない ) 。 ・ Ken Arnold 75 UNIX MAGAZINE 1992.2

2. UNIX MAGAZINE 1992年2月号

Daemons and Dragons ーの そして、所有者が root であるはすのファイルの異常 配布される COPS システムは、省略時の設定がなさ れている。これによって、ディレクトリやファイルの について報告する。 保護モードに関するおもな間題には対処できる。新しい Warning! R00t does not own the following バージョンでは、誰でも書込み可能になっていないかど file(s): /etc うかをチェックすべきファイルやディレクトリの一覧は、 is-able. lst ファイルに登録される。 suid. stop ファ こで、 COPS は /etc が誰かに壊される可能羅が イルには、 set-uid の許されたファイルの一覧が登録さ あることを知らせている。これは、嘆かわしい事態であ れる。それ以外の set-uid ファイルは、セキュリティ る。 の侵害要因としてすべて記録される。サンプルとして用 次は、誰でも書き込めるファイルやディレクトリのチ 意されている suid ・ stop にはシステムに依存した部分 ェックである。 があるので、使用前にカスタマイズをしなければならな Warning ! /usr/spool/mail is —Wor1d— writable ! し ) Warning ! /etc/mtab is ー WO て ld ー writable ! これらの作業が終った時点で、 COPS は重要なファ Warning! /etc/ntp. drift is —Wor1d— writable ! イルやディレクトリに対してのみ、誰でも書込み可能に このほかにも、多くのファイルを対象にチェックをお なっていないかどうかのチェックをおこなう。この段階 で、グループの書込み権限もチェックできるように設定 いくっかのファイルは、このままでもよいと思うかも するのは簡単である。これと同様に、パスワードをチェ しれない ( だが、もし時計が進みすぎていたらどうだろ ックするプログラムはユーサーのパスワードがログイン う ? これは重大な問題である ) 。しかし、けして誰にで 名と同一になっていないかを調べるだけだが、 GECOS も書込み可能であってはならないファイルの異常もみつ フィールドや容易に推測できるパスワードの一覧を用意 けてくれる。 してそれと上交するように設定することもできる。 COPS はしつに賢い。 / etc / rc . * ファイルのなかで、 ほかのファイルを指していると推測されるトークン ( ワ COPS の実行 イルドカードを含む ) を残らす洗いだしてくれるのであ る。それらは展開され、プライバシーが守られているか COPS は、簡単に実行できる。必要な設定をすませ どうかが確かめられる。私のマシンでは、異常が 1 つ れは、あとは c 。 ps とタイプするだけでよい。私はこれ あった。 を使ってテストをおこない、それを 7 、 mtc / 05 一面〃」 9 の ( 7 、 m c は私のマシン名である ) というファイルに出力し た。 Dan によれは、このエラーメッセージの文法は、今 後すこし変更される可能性があるとのことである。フィ ルタを通して出力するためのスクリプトを書く前に、ぜ ひ手許にある COPS のバージョンを確認してはしい。 COPS はセキュリティのさまざまな間題点をチェック するが、理解しやすいように全体像か膕める程度に分割 しながら実行例を紹介しよう。 ます初めに、 COPS は次のような素晴らしいへッダ を出力する。 ATTENT 10 N : 14 : 12 : 28 MST 1991 Security Report for Sat Jan 5 from host rmtc Warning! Fi1e /etc/hostname . ie2 ()n /etc/rc*) is ー Wo て ld ー writable ! これは、 /etc/rc. boot ファイルの次の部分を参照 した結果である。 set 'echo /etc/hostname\ . * ( かなり気が利くと思わないかい ? これが終ると、 COPS はパスワード・ファイルのチ ェックに移る。ます、通常の /etc/passwd ファイルと NIS (Network lnformation System: 旧 (P) のノヾス ワード・ファイルの両方をチェックし、パスワードが欠 けていないかどうかを調べる。 45 UNIX MAGAZINE 1992.2

3. UNIX MAGAZINE 1992年2月号

DAEM 〇 NS & DRAG NS の セキュリティ監査ソステム COPS •Rob Kolstad システムのセキュリティを鎖にたとえれば、それか破 られるのはもっとも脆い輪の部分からであろう。しかし そのことを知っていたとしても、個々の輪がどこにある かを把握し、それらをテストする方法 ( 機械的にできる ほうがよい ) が分からなけれは無意味である。 こで紹介する COPS (Computer Oracle pass- word and Security system) は、これに最適な監査 システムである。かって Purdue 大学にいた作者の Dan Farmer 氏は、現在は CMU の CERT(Computer Emergency Response Team) に在籍している。 COPS とは何か ? COPS は、シェルスクリプトと C 言語のプログラム から構成されている。これは Farmer 氏が Purdue 大 学に在籍中、システム管理者を支援し、いくっかの一般 的なセキュリティ・ホールを避けるために作ったシステ ムである。 COPS は、次に挙げるような項目に問題があれば、そ れを孑商する。 ・指定されたファイルやディレクトリ、デバイスの保護 モード passwd や groups ファイルの間違ったエントリ ・ rc スクリプトや crontab ファイルなどからアクセス される、書込み可能なファイル ・書込み可能なホームディレクトリやユーザーのスター トアッフ・ファイル (. cshrc や . pr 。用 e など ) 追加された set-uid ファイル ・ユーサーが設定した破られやすいパスワード 44 ・ set-uid ファイル from UNIX REVIEW ・変更 ( 追加や削除 ) されたシステムファイル ( CRC の チェックサムを利用する ) COPS には、 Kuang というエキスパート・システ ムも含まれている。これは、特定のユーサーやグループ に対するアクセスが、システム全体に危害をおよは、すか 否かを管理者が判断するためのシステムである は、ます COPS について説明し、次いで Kuang を紹 介することにしよう。 COPS のプログラム本体は B シェルのスクリプト で、セキュリティのチェックに使われるほかのスクリプ トやプログラムを実行し、その結果を記録する。これ以 外に、多数のスクリフトやライプラリが COPS システ ムと一緒に配布される。それらは起動されると、セキュ リティを侵害すると判断したものは ( リモートマシンも 含めて ) すべて出力する。 COPS の本体であるスクリプ トはこれらの結果をセキュリティ・レポートとしてまと め、指定すれば管理者にメールで送ったり、定期的にシ ステムに保存しておくこともできる。ただし、 COPS の スクリプトを使わすに、各モジュールを直接起動するの は困難である。 COPS システムのインストールや設定は簡単である。 ます、ソースをあるディレクトリに展開する。そして README ファイルの指示に従って、 COPS の実行フ ログラム中の ( メールを送るユーザーの名前や anony- mous ftp を許すかどうかなどの ) 定数をいくつか変 更するだけである。用意されている設定ファイルは、 Sun や BerkeIey 系のシステムではほとんど間題なく 動く。 Xenix や Apollo などでは、別に用意されている README ファイルの指示に従ってインストールをお UNIX MAGAZINE 1992.2

4. UNIX MAGAZINE 1992年2月号

マニュアルの話 . SH BUGS 現在まだ、 . BR S 、 J 、Ⅱ オプションは無効である れますから、おかしな箇所がないかを確認します。チェッ こうすれば、オンライン・マニュアルと同し状態で見ら % nroff —man src—text—file ー more ようにコマンドを実行します 3 。 には、 nroff を使うのがもっとも簡単です。その場合、次の 希望どおりのレイアウトになっているかどうかを確認する しにくいものです。リファレンス・マニュアルの作成中に はいえ、慣れないと正しいレイアウトになっているか判断 man マクロは troff/nroff のリクエストよりは簡単と テストの方法 なお、 BUGS セクションは不要なら省くのが普通です。 部分に明記しておきましよう。 ることはなかなかできません。そのようなときには、この UNIX は複雑なシステムですから、あらゆる場合に対応す ていない、というような情報 ) 、環境などが多いようです。 い方 ( 使おうとすれば使えるが、そのような使い方は想定し ーこに書かれるのは、まだサポートされていない機能や使 とはいえ、実際にはフリーソフトウェアでないかぎり、 ぎり書くようにしてほしいものです。 あるでしよう。しかし、ユーサーの便宜を考えてできるか ツヾグを公表するなどとんでもないクという判断はもちろん 商品として販売するシステムのマニュアルを書く場合、 といったところでしよう。 ・インデントの状態や行の状態 ・必要なセクションがあるか ・ヘッダやフッタの情報 クポイントとしては、 UNIX MAGAZINE 1992.2 ん。とくにこれらを使うとポールド体で表示されるのなら、そのはうがよいで 3 もちろん、好みによって groff や厄などのコマンドを使ってもかまいませ 明書〃などに添付する必要がある場合は、本が完成して 作成したリファレンス・マニュアルを印刷してヾ取扱説 から troff や ditroff を使って確認したほうがよいでしよ う。このときも X などに対応した troff / ditroff のプレピ ーアを使えば、時間や用紙の節約にもなります。 リファレンス・マニュアルには、印刷およびオンライン の 2 通りの形態があります。いすれの場合も、内容はもち ろんですが、レイアウトも希望どおりになっていることが 重要です。 ファイルの置き方 ファイル名と置き場所 リファレンス・マニュアルのソーステキスト・ファイノレ は、もちろん UNIX のファイルですから名前が付いてい ます。この名前は、次のような規則に従うことになってい ます。 名前 [ 例 ] ls . 1 , く セクション ope Ⅱ . 2 , passvd. 5, vipw. 8 ですから、皆さんがリファレンス・マニュアルのソース テキスト・ファイルを作成するときには、あらかしめその 名前でファイルを作成することになるでしよう。 最近は、セクションがさらに細分化されて、、 rlogin ・ lc ク や、、 ls. lv 〃などのファイル名になっているものもありま す。しかし、それらの細かな分類がどういう意味なのか分 からなければ、大きなセクションを使うだけで十分です。 これらのファイルはオンライン・マニュアルにも使われ ますが、そのときは前回も紹介したように / usr / man / man? 、またはシステム管理者が指定したディレクトリに置 かれることになります。 ソーステキスト・ファイルの共有 ところで、 grep 、 egrep 、 fgrep のように、 1 つのソース テキスト・ファイルで複数のコマンドについて説明してい るような場合、それぞれのオンライン・マニュアル用にフ ァイルをコピーしなければいけないのでしようか。答は NO です。 そのようなときは、代表となる項目用のソーステキス ト・ファイルがきちんとした内容になっていれは、それ以 127

5. UNIX MAGAZINE 1992年2月号

一方 MH では、 1 つのディレクトリが 1 つのフォルダ ーになります。 1 つのメッセージは、そのディレクトリの 下に 1 つのファイルとして保存されます。ファイルには、 数字の 1 から順に連続した番号のファイル名が付けられ ます。そしてこのファイル名が、フォルダー内に存在する 個々のメッセージを扱うときのメッセージ番号になります。 フォルダー ( ディレクトリ ) とそこに保存されているメッ セージ ( ディレクトリの下のファイル ) の様子を、図 1 に示 しておきます。 以降では、フォルダークという単語はとくに断わらない かぎりフォルダー用のディレクトリを指すと考えてくださ い。 UCBMaiI のフォルダー ( ファイル ) と間違えないよう に注意してくださいね。 UCB Mail では、管理者が /usr/lib/Mail. rc に、ユーサ ーが ~/. mailrc にオプション設定などを記述し、独自の環 境設定がおこなえます。使用するファイルこそ違いますが、 MH でもこのような環境設定が可能です。 MH では、 /usr/ local/Iib/mh2 にいくつかのファイルがあり、管理者はこれ IJN Ⅸへの招待⑩ 図ー 2 MH のインストール時の設定により、これ以外のディレクトリに置かれている フォルダーとメッセージ ホームディレクトリ 1 inbOX 2 . mh-prof ile 100 3 1 Mai1 friend 2 aya be11 2 1 1 ↑ フォルダー らを使って環境設定をします。一方、ユーザーは、自身の 環境設定のために、 /. mh-profile を使います。 UCB Mail と同様、これらの環境設定ファイルに記述されてい る内容によって、コマンドの動作が異なります。したがっ て、以降に示すコマンドの実行例は、皆さんのシステムで の実行結果とはすこし異なるかもしれません。どの設定が 関係しているかは、各コマンドの詳細を説明するときに触 れる予定です。 以降では、 MH に関するコマンドをいくつか紹介しま す。まず、自分のマシンで試す前に MH 関連のコマンドが 置かれているディレクトリの名前が、シェル変数 pa 出 ( あ るいは PATH ) に含まれているかどうか確認してください。 どこに MH 関連のコマンドを置くかは管理者が決定しま すので、分からなかったら管理者に問い合わせてください ( 通常は、 /usr/new/mh や /usr/local/bin/mh などに置 可能性もあります。 かれています ) 。 メッセージの取込み では、メールを読む操作から始めましよう。 UCB Mail では、 mail コマンドを起動したあと、メッセージ表示用の コマンドを使って個々のメッセージを読みます。一方 MH では、最初にメールポックスから自分のフォルダーにメッ % from From aya@home. co. jp Thu Fri 29 00 : 51 : 19 1991 142 セージを取り込む作業が必要です。これには、ⅲ c コマンド を使います。このコマンド名は、 incorporate( 編入する、 組み入れる ) を略したものです。 では、 inc コマンドを実行してみましよう。 UNIX MAGAZINE 1992.2

6. UNIX MAGAZINE 1992年2月号

ワークステーションのおと一 すから、パーティションごとに必要な本数を計算しなけれ ばならないのです 2 計算してみると、 Exabyte は 40 本くらい必要でした が、これはどこでも売っていますし値段も安いので問題は ありません。ところが、 QIC-150 は全部で約 70 本必要 なことが分かりました。これは 1 本あたり 3 , 000 ~ 5 , 000 円もしますし、こオけごけの本数となると月もけっこう遅 れるので注意が必要です。 実際のバックアッフ。で気をつけるのは、テープの管理で す。全部で 100 本以上のテープになるわけですから、き ちんと整理しておかないと、バックアップはできたが、戻 せないという羽目に陥ってしまいます。そこで、次のよう なことに注意します。 ・どの言 t 算機のどのファイルシステムのテープか ? ・マルチボリュームなら、全部で何本あって、そのうち の何番目か ? 全部の本数が分かっていれば、回復するときに時の目 安にもなります。 ・そのポリュームは何番目の i-node からか ? 1 つだけファイルをテープから回復しなけれはならない ときは、そのファイルカ可番目のテープに入っているか が分かれは、素早く回復できます。 さて、 dump は i-node 番号の順にファイルのバック アップをとります。そして、テープを掛け替えるとき に、そのときのファイルの i-node 番号を教えてくれ ます。 restore でテープのインデックスを見ると、その ファイルの i-node 番号を教えてくれます。ですから、 さきはどの i-n 。 de 番号をちゃんとテープに言求してお けば、どのテープに入っているかがすぐに分かるという ー S どんなパラメータで dump したか ? * とするのが、結果カ吩かりやすくていいです そのファイルシステムのトップディレクトリで du ・中身は何か ? その大きさは ? わけです。 50 ないし、 dump のテープ長ク片旨定も面倒なのでしていません。 ました。たしかにそうですが、何番目の何を書いたかも管理しないといけ に巻き戻さないデバイス、 nrst で次々と書いていけるやんか」と言われ 2 この部分をある人に見せたところ、「 Exabyte だったら、 1 本のテープ Exabyte の場合、 QIC のテープと違って可変長レコー 図 1 パックアップ・テープのラベル dump Oufbsd /dev/rstO 50 6000 54000 tamtam : /disk/sdllc 156020 4980 40 760 36650 112500 GKS proj X WS—NOTE yamabuki MiNT volume 1 / 1 inode from 0 to ノ 23 イ 5 ドなので、書いたときと同じプロックサイズで読み出さ ないといけないからです。 いちいちこんなことを憶えておくのは面倒ですから、あ らかしめ図 1 のようなラベルを作っておいて、バックアッ プのときに貼っていくようにすると便利です。 このラベルも、シェルスクリプトと ' I を使えば自動 的に作成できます。 バックアップを実行する前に、ディスクの大掃除をし ましよう。ファイルの量が 1 害咸れば、バックアップの 時間も 1 割減り、回復の時間も 1 割減ります。テープの 量も 1 割とまではいきませんが、確実に減ります。そうす れば、なんらかの事故ーーたとえばメディアが不調で読 み出せないとか、テープの紛失などの事故も減らせます。 刻帚除の目標はできるかぎり大きく、、ディスクの使用 量半減 ! ! " くらいを掲げましよう。 ・終ったプロジェクトやとりあえす不要なものは、テーフ にとって消してしまいましよう。 ・ core を消すのは当り前です。 ・もちろん、 . 。は消します。 ・ちょっと大胆な気もしますが、ソースがとってあるライ プラリも消します。 ・ソースがとってある。 I kX の . dvi ファイルは消します。 dvi2ps の出力の ps ファイルも消します。 ・ Emacs Lisp のバイト・コンパイルしたファイルも大 丈夫です。 ・ Emacs や MH が作るバックアップ・ファイルも消し ます。 全部のディスクを find して、 tar 、 uuencode 、 shar 、 compress がかかっているものをみつけ、不要なら消し ます。 UNIX MAGAZINE 1992.2

7. UNIX MAGAZINE 1992年2月号

A>cd *tcpip A>set NETONE=. *tcplc A>tcpnetid このコマンドでは、次の入力をおこないます。 ・カードのシリアル番号 ( * ) ・カードのタイプ ( * ) ・ PC の IP アドレス ( * ) ・サプネットマスク ( * ) ・ルータの IP アドレス ・ネームサーバーの IP アドレス ・ RARP の使用 ・プロードキャストの形式 ( * ) ・セッションを切断するまでの時間 ・ IP ルータ経由の MS-Networks の成疋 ・ UB ネームサーバーの IP アドレス ・バックアップ UB ネームサーバーの IP アドレス ・ NetBIOS データグラム・サーバーの IP アドレス ・ノヾックアップ NetBIOS データグラム・サーバーの IP ・出力ファイル名 ・ドメインネーム ートビートの設疋 アドレス の設定を追加していく方法をとらないと、間題が発生した ます最低限の設定で動作を確認し、うまく動いたらはか デフォルトのままでも氏限の重川乍はするはすです。 ク、プロードキャストの形式を設定すれば、そのはかは ル番号とタイプ、 PC の IP アドレス、サプネットマス 作するか確認したほうがよいでしよう。カードのシリア とりあえず、 * 印を付けた最低限の設定をおこない、動 94 . \ tcplc \ 1C5 \ 12345a. lc リアル番号が 12345 ならば、 という設定情報ファイルが作成されます。たとえば、 lc [ カードのシリアル番号の下 1 桁 ] \ [ カードのシリアル番号 ] a. 1c このように設定すると . \ tcplc ディレクトリの下に とき原因が分からなくなってしまいます。 ン というファイルか作成されます。次にインスト ニュアルでは、 copy . \ tcplc \ 1C5 \ 12345a. lc stdlc . tcp UNIX MAGAZINE 1992.2 ます。 TCP/IP ドライバの起動には、 3 つのガ去が考えられ おりに stdlc. tcp ファイルにコピーして使いましよう。 る " という説明がよく分からない人は、マニュアルのと この、、カードのシリアル番号をもつ情報ファイルを作 とします。 tcpbios -m:d8 -i:5 —p:O loadniu —m:d8 —i : 5 —p:O etniuw. xfm %CARD—SER%a. 1c cd *tcpip などと設定し、 ETWS. BAT は、 set CARD_SER=12345 れの PC の AUTOEXEC. BAT のなかで、 コマンドを起動すれはいいでしよう。この場合、それぞ (CARD-SER) に代入し、その環境変数を使って loadniu ればならないので、カードのシリアル番号を環境変数 これでは、 PC ごとに別の起動ファイルを作らなけ tcpbios —m:d8 —i:5 —p:O loadniu —m:d8 —i : 5 —p:0 etniuw. xfm 12345a. Ic cd *tcpip loadniu コマンドの引数も忘れすに変更してください。 この場合、起動コマンド ETWS. BAT に書いてある copy . \ tcplc \ 1C5 \ 12345a. lc リアル番号をもつ設定情報ファイルが作れます。 たとえは次のようにコピーすれは、ハードウェアにシ ルか管理しやすいでしよう。 ドのシリアル番号を含んだ名称にしたはうが情報ファイ ら、このようなー殳的なファイル名ではなく、個別のカー しかし、多くの PC を集中管理をしようとしているな stdlc. tcp としているのです。 さきの ETWS. BAT のなかでは、設定情報ファイルを ル名でコピーするように指示されています。そのために というように、このファイルを stdlc. tcp というファイ

8. UNIX MAGAZINE 1992年2月号

Daemons and Dragons ーの ずさんなパスワードを使っていないかどうかもチェック また、ユーサーが ( ログイン名をそのまま使うような ) sync : : 1 : 1 :Fi1esystem Sync : / :/bin/sync Warning ! Password file , line 7 , no password: ざまなセキュリティ・ホールをチェックする。 COPS はさらにファイルシステムを見て回り、 イルについても同様のチェックをおこなう。 する。新しいバージョンでは、 NIS のパスワード・ファ さま setuid ファイルに関するメッセージには、当惑する lncorrect permISS10ns 0 取 in ,/etC ! lncorrect permxssxons 0 Ⅱ passwd" in /etC ! lncorrect perm1SSIons 0 Ⅱ 11i /bin ! /. rhosts should be empty ! /bin should be owned by root ! Home directory for ftp doesn't exist ! /usr/bin/uudecode creates setuid files ! Warning ! Warning ! Warning ! Warning ! Warn ing ! Warn ing ! Warn ing ! COPS や Kuang が監視するファイルやディレクト るあなたの役目なのだ。 に適した完全なツールに仕立てあげるのは、管理者であ 的な生成は難しいのである。つまり、 COPS をサイト る。本来、これらはシステムに依存しているので、自動 ングの対象となるファイルやディレクトリは限られてい COPS 、とくに配布された状態のものでは、モニタリ COPS の限界 ンをもっプログラムを捜しだす ) 。 カ配列をオーバーフローさせることができる入力ルーチ はいえないだろう ( あるワームはこの設定を利用し、入 イナリファイルか読めてしまう。これは、最善の設定と 違った保護モードが設定されていると、ユーサーにもバ るかもしれない。いすれにせよ、 ( 例に挙げたような ) 間 という意見もあれば、これとは異なる考えをもつ人もい bin またはそれ以外の害のないユーサーが所有すべきだ は、さまざまな考えがある。たとえば、 /bin はユーサー ディレクトリの所有者を誰にすべきかという点について ホームディレクトリのチェックはじつに明快である。 る。 ーに対してトロイの木馬が送り込めることを意味してい ファイルが作れること、そして、それを実行したユーサ かもしれない。これは、 uudecode を実行すれば setuid 46 リは、もちろん、これまでに明らかになっているセキュ リティ障害の原因となりうるものだけである。もし誰か か新たなトロイの木馬やセキュリティ・ホールを考えつ いても、 COPS はます間違いなくそれを発見できない であろう。だが、有効な手段がみつかるまで手をこまぬ いているよりはましである。また、 COPS にはほかの 多くの有益なセキュリティ・プログラムも取り込めるの で期待がもてる。 COPS は熟練したシステム管理者さ え犯しがちな、ありふれた間違いを避けるための手助け をしてくれるのである。 エキス′ヾート・システム Kuang ルールべースの Kuang は、 COPS の一部をなす興味 深いシステムである。これは、、パスワード・ファイルへ の書込み " などを目的とする uid や gid のリストをもっ ており、与えられたルールに従ってその方法を捜しだそ うとする。 Kuang は、たとえは、、 a writable /etc/passwd or crontab file allows root access ( 書込み可能な /etc/passwd や crontab ファイルは root のアクセス を許す ) " というようなルールを用いてツリーを形成す る。そしてすべてのプランチが、設定ファイルに記述さ れた ( ューサーやグループの ) 保護モードに合っている かどうかを調べるのである。 前述の、、目的 " を達成するための方法が存在している 場合、 Kuang は方法をみつけることに成功したと報告 する ( もちろん、そのような方法がないことを願ってい る管理者にとってはがっかりするような報告だが ) 。 私は特別な設定 (root になれる抜け道を捜すような ) をせすに、とりあえず実行してみた。しかしこれは失敗 に終り、ひどくがっかりさせられてしまった ( むろん、 管理者には嬉しいことにちがいない ) 。 私は考えた。、、ええい、いまいましい。それなら、わ ざと小さなセキュリティ・ホールを作って、それを発見 できるかどうか試してみようじゃないか " そこで、友人 のお気に入りのセキュリティ・ホールを使い、 / . cshrc ファイルの保護モードを 666 にセットした ( 誰かがこの ファイルにコマンドを書き込めば、 root がそれを実行 してしまうかもしれない ) 。 そしてふたたび実行してみたところ、今度は見事に成 UNIX MAGAZINE 1992.2

9. UNIX MAGAZINE 1992年2月号

マニュアルの話 表 6 よく使われるセクション バージョン。フリーソフトウェアに多い AUTHOR AVAILABILITY COMMANDS COPYRIGHT DIAGNOSTICS ENVIRONMENT ERRORS EXAMPLES EX IT CODE LIMITATIONS NOTES RETURN VALUE US AGE VERS I ON WARNINGS 作者名。フリーソフトウェアなどに多い 使用できる機種や環境の限定 サプコマンドの説明。プログラミング言語に多い 著作権表示。フリーソフトウェアに多い メッセージや動作の診断。多くのものにみられる コマンドが使用する環境変数の説明。多くのものにみられる ツールの詳しい使い方の説明。 DESCRIPTION に含まれることが多い 戻り値。システムコールや関数に多い 各種のメモ 使用上の制限。 BUGS に含まれることが多い コマンドの終了値。 EXIT STATUS の場合もある 使用例。多くのものにみられる 工ラーの説明。システムコールや関数に多い 使用上の注意 図 8 リファレンス・マニュアルのソーステキストの形式 . TH SAMPLE 1 . SH NAME ( コマンドの名前 ) . SH SYNOPSIS ( コマンドの使い方 ) . SH DESCRIPTION ( コマンドの詳しい説明 ) . SH OPTIONS ( コマンドのオプションの説明 ) . SH FILES ( 使用するファイルのリスト ) . SH SEE ALSO ( 関連する項目のリスト ) . SH BUGS ( 判明している不具合やバグ ) UNIX MAGAZINE 1992.2 kls \ ー canon LaserSh0t 用漢字ファイル出力フィルタ . SH NAME とその簡単な説明を次のように 1 行に記します。 このセクションには、コマンドや関数、ファイルの名前 、 AME / 名前 / 名称 おもなものについて、順に説明していきます。 すればよいのです。 ュアルを書く人が必要と感しるものがあれば、それを追加 これ以外にもさまざまなセクションがあります。要はマニ を表 6 に示しましたので、参考にしてください。もちろん、 しよう。必須のセクション以外にどのようなものがあるか マンドの場合は OPTIONS も ) はほほ必須項目になるで 、、名前〃は、 TH マクロで指定したものと同しにしなければ なりません。 grep 、 egrep 、 fgrep のように 1 つのマニュア ルで複数のものを説明するときには、、、名前クとして必要な ものをツ〃で区切って並べます。 、、名前クと、、説明〃のあいだには、、 \ ノを入れて区切りま す。、、説明〃には、簡潔でしかもそれが何かすぐに分かるよ うな文章を入れてください。というのは、この部分が抜き 出されて whatis ファイルに保存され、 man コマンドの一 k オプションや、 whatis コマンドなどでコマンド / 関数 / フ ァイルの確認や検索に使われるからです。したがって、確 認 / 検索時のことも考えてキーワードに適した用語を使う ように心掛けましよう。 SYNOPSIS/ 形式 このセクションには、コマンドの使い方、オプションの 不頁、関数の呼出し方、引数、必要なヘッダファイルなど を書きます。ただし、ファイル・フォーマットの説明の場 合には、、 /etc/passwd" のように、そのファイルが置かれ ている位置を書くのが普通です。また、 grep 、 egrep 、 fgrep のように複数の項目を 1 つのマニュアルで説明するときに は、それぞれの項目を続けて書きます。 . SH SYNOPSIS . B kls . [ " オプション " ] . RI [ " ファイル 125 ューザーはここを見てそのコマンドや関数の使い方を知

10. UNIX MAGAZINE 1992年2月号

供する。このエデイタが優れているのは、これらの目標 をすべて見事に達成している点である。 SpeedEdit は DOS (Windows を含む ) 、 OS/2 、 SCO UNIX 、 Xenix 、 lnteractive UNIX 、 AT&T UNIX 、 HP-UX ( 300 / 400 / 700 / 800 システム ) 、 MPE と MPE- XL 、 SunOS で使用できる。これらすべての環境で基本 的に同等の機能を提供し、コマンド構成と画面レイアウ トも共通である。 MPE と MPE ー XL 以外の環境向け に、 2 つのバージョンが出荷されている。 1 つは標準の キャラクタ端末用であり、もう 1 つはウインドウ環境用 である。 インターフェイスは、いくつかの方法で利用できる。 コマンド、メニュー、ファンクションキーあるいはコン トロールキー・シーケンスで操作できる。これらをどの ように組み合わせて設定してもよいので、別のエデイタ やワードプロセッサに慣れている人は、それに近いキー ストロークで利用できる。 画面はすっきりまとまっている。ウインドウ版もキャ ラクタ端末版も画面の最上行にタイトルを、最下行にフ ァンクションキー列 ( 使用する場合 ) を表示する。画面の ほかの部分には、自由にタイプ入力できる。 このエデイタのもっとも優れた特徴の 1 つは、カスタ マイズの自由度が高いことである。プログラムは、全体 的に調整可能である。コントロールキー・シーケンスと ファンクションキーは、必要に応して再定義できるにれ は、ファンクションキーがない端末ではとくに役立つ ) 。 メニューとヘルプ画面も変更 ( 項目の再配置、追加、削除 ) できる。工デイタから実行されるコンパイラ、リンカ、 ピルドおよび make のコマンド行の定義など、ちょっと した変更もできる。さらに、省略時の言語スタイルとし てコンパイラとプログラミング言語も設定可能である。 SpeedEdit は、主としてプログラマー用のエデイタと して設計されている。多くの最新機能とともにすべての 基本編集機能を備えており、ワードプロセッサとしても 使える ( ワードラップとジャスティフイケーションの機 能もある ) 。 特定の言語でプログラミングする場合、 SpeedEdit は その言語に適した自動インデントをおこなう。言語とし て、 C 、 C 十十、 COBOL 、 PascaI 、 Fortrans アセンプ ラ、 HP の SPL を認識する。最初の数文字の入力からキ ーワードの自動補完もできるし、自動的にプレース ( 半 UNIX MAGAZINE 1992.2 NOTICE と、 )" ) の対応をとることも可能である。さらに、プレー スやパーレン ( 、、 ( 〃と、ア ) 、特定の言語の begin/end 構 造を逆方向に検査することもできる。 基本機能に対するいくつかの拡張はとくに有用であ る。多数のファイルを対象とした検索 ( および検索置換 ) 機能はよくできている。対象とするファイルの指定は、 ファイル型 ( * . c など ) またはファイル名を含むリスト でおこなう。これによって、多数のモジュールからなる プログラム全体の変更がごく簡単におこなえる。 ューサーは一連のキーストロークを記録しておき、そ れらを望むときにいつでも繰り返すことができる ( キー ポード・マクロ ) 。マクロは、ファイルに保存しておいて もよい。マクロはファイル名だけではなく、それらの目 的を識別するテキスト記述にも割り当てられる。大部分 のプログラマーは、頻繁に使うマクロのライプラリを早 速作ることだろう。 このほかにも、行番号、ファイルのあちこちに素早く 移動するためのマーク、増分検索、文字の入替えなどの 便利な機能がある。また、自動的にバージョン番号を処 理できるようになっており、ファイルが変更されるとバ ージョン番号が増える。 SpeedEdit のウインドウ・インターフェイスは快適 で、ウインドウをうまく利用している。押しつけがまし いところもなく、均整のとれたイメージを提供する。ウ インドウ環境でも、 SpeedEdit は必要十分な速度で動 く。フ。ルダウン・メニューとポップアップ・メニューは きれいにデサインされており、使い方も簡単である。ウ インドウやマウスが嫌い、または使えないユーサーには、 キャラクタ端末版が用意されている。これは、 ASCII モ ードでは機能にまったく遜色はない。どちらの版でも、 使える部分ではカラーをサポートしている。ただし、 れは機能を強イヒするためであって、ユーザーを混乱させ るためではない。 SpeedEdit 特有のものとしては、 "remote program development" が挙げられる。これは、ファイルをワー クステーションなどからホストへ自動的に転送する機能 である。 PC のユーサーは、 DOS や Windows 用の SpeedEdit を使って編集したファイルを、接続されてい るホストに 1 回のコマンド入力で転送できる。 DOS フ ァイルは、自動的に UNIX 形式に変換される ( その逆も 可能である ) 。 21