4 章 システム環境の設定と管理 # Berke1ey Host Database localhost 127. 1 # remote hOSt ip address 192 . 0 . 2 . 5 192 . 0 . 2 . 210 j0hn. cs . chofu-u. ac. jp ftp. chofu-u. ac. JP natasha. cs . chofu—u. ac ・」 p natasha 図 4 ー 18 /etc/hosts の例 41.6 ネットワーク・インフォメーションサービス ( NIS ) ネットワーク上で運用しているシステムを効率よく一括管理するため、ネッ トワークを使っていろいろなデータベースを提供する機能にネットワーク・イン フォメーションサービス (Network lnformation Service: NIS) がある。標準では NIS tt/etc/passwd 、 /etc/group 、 /etc/networks 、 /etc/hosts 、 /etc/protocols 、 /etc/services 、 /etc/aliases 、 /etc/ethers 、 /etc/bootparams 、 /etc/netgroup 、 /etc/netmasks 、 /etc/rpc の 12 のデータベースをネットワークを通して提供 できる。ただし、プロトコル的には他のデータベースに関してもテキスト べースのもので、かっ、クライアントが NIS をサポートしていれば NIS を 使って情報を提供できる。前に述べた amd システムの NIS マップはこの一例 である。 ・ NIS の仕組み NIS で管理されるグループは NIS ドメインによって管理されている。同じ NIS ドメインネームを持つホストは 1 つの NIS グループと見なされる。 NIS はサーパ・クライアント・モデルで動作するデータベースシステムで、 サーバとして、マスタサーバとスレープサーバが存在する。マスタサーバは 1 つの NIS グループに 1 台しか存在せす、実際にデータベースをテキスト ファイルとして持っているホストであり、スレープサーバはマスタサーバが 故障したときなど、代わりのサーバとして働いたり、マスタサーバの負荷を 160
9 章ネットワーク環境 ターフェイスと同様に使用できる。また、 BSD / 386 の SLIP ではダイヤルアッ プ SLIP として使うこともできる。ダイヤルアップ SLIP として使うためには configsl により /usr/local/bin/slipup スクリプトの準備をする必要がある。 また、ダイヤルを受ける側では / etc / passwd によるログインアカウントの準備、 および /etc/slip. hosts 、 /etc/slip ・ login 、 /etc/slip. logout の設定力ゞ必要 である。それぞれのファイルの設定例を図 9 ー 1 、図 9 ー 2 、図 9 ー 3 に示す。また、 SLIP のためのログインアカウントのログインシェルは /usr/sbin/sliplogin にしておく。 #loginname local-address slipusr 130. 153. 131. 1 # ! /bin/sh remote—address 130. 153. 131.2 netmask 255 .255.255.0 opt-args 図 9 ー 1 /etc/slip. hosts の例 /sbin/ifconfig sl $ 1 $ 4 $ 5 netmask $ 6 up 図 9 ー 2 /etc/slip ・ login の例 # ! /bin/sh /sbin/ifconfig sl $ 1 0.0.0.0 down 図 9 ー 3 /etc/slip ・ logout の例 こで、 /etc/slip ・ login と /etc/slip ・ logout は、実行ビットを立ててお く必要がある。詳しくはリリースノートやマニュアルを参照してほしい。 ■ P PP インターフェイス PPP は SLIP に比べてやや複雑なプロトコルである。現在その実装は複数 426
4.1 システム設定 に存在し、 /etc/crontab 、 /var/cron/tabs/* で設疋されたコマンドを設定さ れた時間に実行する。通常 /etc/crontab にはシステム管理のために定期的 に実行する必要のあるコマンドが、 /var/cron/tabs/* には個人で実行するコ マンドが書かれている。 / var / cr 。 n / tabs / * の、、 * 〃の部分はユーサー名である。 /var/cron/tabs/* と /etc/crontabs との違いは /etc/crontabs がスーノヾーユー サーの権限で実行されるのに対し、 /etc/cron/tabs/* はそのファイル名のユー サーの権限によって実行されることである。 /etc/crontab と /var/cron/tabs/* のフォーマットは同じであり、両者とも 6 つのフィールドから成る。始めの 5 つは頭から分、時、日、月、曜日を表 している。それぞれは、、 , 〃で区切って数字を並べることもできるし、 * 〃を指 定してすべての場合に当てはまるようにすることもできる。 6 つ目のフィー ルドは実際に実行するコマンドである。 / etc / cr 。 ntab の例を図 4 ー 27 に示す。 SHELL=/b in/ sh 0 , 15 , 30 , 45 * * * * root /usr/bin/at root /bin/sh /etc/daily 2 > & 1 ー tee /var/log/daily. out ー mail —s 0 2 * * * "daily output" root 30 3 * * 6 て 00t /bin/sh /etc/weekly 2 > & 1 ー tee /var/log/weekly. out ー mail —s "weekly output" root 30 5 1 * * root /bin/sh /etc/monthly 2 > & 1 ー tee /var/log/monthly. out ー mail —s "monthly output" root 図 4 ー 27 /etc/crontab の例 また、 一般ユーサーが /var/cron/tabs/* に設疋するために crontab コマン ドが用意されている。通常、一般ューサーは /var/cron/tabs/* に直接書き込 むことは許されていないが、 crontab コマンドを用いることによって、ファ イルの差し替え、読み出し、消去ができる。実際には差し替え、読み出し、 消去は次のように行う。 # /usr/bin/crontab ーて my ・ crontab # /usr/bin/crontab ー 1 # /usr/bin/crontab 去示集 消表編 175
4.1 システム設定 られた、番号で表現されたユーザー識別子である。同しューザー ID を持っ ューサーエントリも作れるが、システムはこの番号でユーサーを識別するの で、この場合は、 2 つのユーザーエントリは同しアクセス権を持っことにな る。このようなエントリの作成は、スーパーユーザーに 2 つのパスワードを 付けたいときなどに有効である。 、、グループ〃は番号で指定されたグループ識別子である。この番号は / etc /group で管理されている (/etc/group については後述 ) 。 、、ユーザークラス 、、バスワード変更期限〃、ヾユーザー消去期限〃の 3 つフィ ルドは /etc/master ・ passwd のみに存在するものである。ユーサークラスは現 在の UNIX では使用されていないが、近い将来、ユーザーの属性を termcap フォーマットで記述する予定である。パスワード変更期限、ユーザー消去期 限は ep 。 ch * 2 からの秒数で、それぞれ、パスワードが変更されなければなら ない期限、ユーサーエントリを無効にする期限を記述したものである。 gec 。 s 〃はユーザーの本名、電話番号などの個人情報を記述しておくフィー ルドである。 finger などがこのフィールドを使用する。 ホームディレクトリ〃にはユーザーのホームディレクトリを、ヾログインシェ ル〃にはユーザーがログインしたときに最初に起動されるプログラム ( シェル など ) を絶対パスで記述する。 ューサー情報を変更するためには /etc/master ・ passwd を変更しなければな らない。 / etc / master ・ passwd はシステムのアクセス制御の基盤となるファイ ルである。前述したように、 /etc/master ・ passwd はスーノヾーューザーにしか変 更が許されていないので、システム管理者はスーパーユーサーになって作業を 行う。この際、細心の注意が必要である。たとえば、 2 人のシステム管理者が 同時にこのファイルを変更したような場合、 /etc/master ・ passwd の情報を破 壊してしまうことがある。このようなことが起きないよう /etc/master ・ passwd を変更するときは専用のプログラムである vipw を使用する。 vipw はロック ファイルを作って、さらに / etc / master ・ passwd のコピーを作りそれに対し工 デイタを起動する。工デイタは環境変数 EDITOR が設定されていればその工 * 2 UNIX では 1970 年 1 月 1 日 0 時 0 分 0 秒を epoch と称し、時間はここを起点として数えられる。 131
4 章システム環境の設定と管理 /etc/master ・ passwd 、 /etc/passwd には、 1 ユーサーの情報が 1 行に記述さ れている。 /etc/master ・ passwd の 1 ユーザーの情報は、、 : 〃で区切られた 10 個 の、 /etc/passwd は 7 個のフィールドからなる。それぞれのフィールドには 次のような情報が含まれている。 ログイン名 ノヾスワード ューザー ID グループ ID ューザークラス (/etc/master. passwd のみ ) パスワード変更期限 (/etc/master ・ passwd のみ ) ューザー消去期限 (/etc/master ・ passwd のみ ) gecos ホームディレクトリ ログインシェノレ ログイン名〃は文字列で表現したユーサーの名前である。ログイン名のシ ステム上での重複、、、ノで始まるログイン名、ログイン名の中にを含む こと、非 ASCII 文字を使うことは許されない。また、ログイン名を大文字 やで分割すべきではない。それは、大文字でログイン名を始めた場合、 getty に始めの 1 文字を大文字で渡すと getty はその回線を大文字しか表示 できない端末として扱うため、以後小文字が使用できなくなるからである。 〃を使用したログイン名ではメールシステムの設定によってはおか しな動作を引き起こすことがある。 、、バスワード〃はユーザーが設定したパスワードを暗号化したものである。 このフィールドを空にしておくと、パスワードは設定されない。また、ログ インすることのないエントリではこのフィールドを、、 * クなどとしておくこと により永久にログインされることのないエントリを作ることができる。この ようなエントリは、アクセス制御のために用いるユーサーエントリに対して 有効である。 、、ユーザー〃は各ューザーに対してシステム上で重複しないように割り振 130
bOOt ① シングルユーザー 2.4 YES シングルユーザー モード Ctrl-d fork プートストラップ スクリーンの様子 ユーザーの 、 etc/gettytab« ④ ⑤ ⑥ ⑦ ② 、 /etc/ttys を オープンする gettY login 終了 csh tty を オープンする getty 図 2 ー 3 NO /etc/rc ③ wait init おやすみ 終了 各デーモンを発生 町を オープンする getty login csh /etc/init の働き 10010 : X X PasøvOrd: 10010 : X X pa ー・響 0 て 0 : X 53
4.1 システム設定 こで、 startx はホームディレクトリの . xinitrc を参照して、存在していれば それを実行する。 . xinitrc の書き方については 5 章を参照してほしい。 もう 1 つの方法である x 面では管理者は / etc / rc. 1 。 cal などのファイルで UNIX 起動時に / usr / X11 / bin / x 面が実行されるようにしておかなけれはなら ない。 xdm に関する細かな設定は / us て / X11 / lib / X11 / x 面にあるファイル群で 行っ。 x 面が立ち上がっている様子を図 4 ー 26 に示す。 4.1.9 起動時の初期設定 これまでさまざまな設定を見てきたが、これらの設定の中にはシステムを 再起動する度に設定し直さなければならないものも多数あった。このような 設定を自動的に行うために BSD では /etc/rc 、 /etc/rc. local が用意されてい る。これらのファイルはシェルスクリプトである。 /etc/rc. local は /et c/rc から呼び出されるようになっている。システムによっては /etc/rc. local の はかにも /etc/rc から呼び出されるシェルスクリプトが存在するものもある。 smile»・ . cs.uec ・ acap L ・ ! 0 ー 0 ー一価新ヨ 0 ヨ . 第 (. 8. ル 図 4 ー 26 x 面の動作例 173
4.2 ATTENT I ON : Security Report for Sat Jun 4 23 : 47 : 12 JST 1994 from host green. cs . chofu—u. ac . 」 p Warning! R00t does not own the following file(s) : /etc/group システムの保護 Warning ! Warn ing ! Warning ! Warn ing ! Warning ! nogroup Warning ! Warning ! NFS fi1e system /cdrom exported with Ⅱ 0 restrictions ! /etc/security is —Wor1d— readable ! /etc/passwd is —Wor1d— writable ! /etc/unixd. pid is —Wor1d— writable ! Dup1icate Group (s) found in /etc/group : User sys's home directory /tmp is mode 01777 ! User uucp ) S home direc tory /var/spool/uucppublic is mode 01777 ! Warning ! User shigeo ' s home directory /home/pdl/shigeo is mode 0777 ! Warning ! User slip ' s home directory /tmp is mode 01777 ! Warning ! User ppp ' s home directory /tmp is mode 01777 ! Warning! Password file, 1ine 2 , user toor has uid = 0 and is not root toor:* : 0 : 0 :System Administrator bash user: / て 00t : /bin/bash Warning ! Password file , line 14 , invalid 10g1n directory : canna: * : 126 : 126 :Canna maintenance : Warning! Password file, line 15 , invalid login directory: wnn : * : 127 : 127 : Wnn maintenance : Warning ! User yosiharu : /home/pdl/yosiharu/. forward is mode 0666 ! ftp—Warning ! ftp—Warning ! ftp—Warning ! ftp—Warning ! ftp¯Warning ! ftp—Warning ! /export/ftp/etc/passwd and /etc/passwd are the same ! Fi1e /export/ftp/etc/passwd is missing (anon—ftp setup) ! /export/ftp/etc/passwd should be owned by root or root ! /export/ftp/bin/ls should be owned by root or root ! lncorrect permissions 0 Ⅱ in /export/ftp/bin ! lncorrect permissions on passwd" in /export/ftp/etc ! 図 4 ー 28 cops の報告例 181
4.1 システム設定 セス制御機構を提供している。ューサーはかならず 1 つ以上のグループに所 属することになる。グループ情報は / etc / g て。 up で管理される。 /etc/group の 例を図 4 ー 3 に示す。 /etc/group は、、 : 〃で区切られた下の 4 つのフィールドから成る。 グループ名 ノヾスワード グループ ID メンノヾーリスト 、、グループ名〃は、グループの名前を ASC Ⅱ文字列で表したものである。ンヾ スワードクは暗号化されたパスワード、、、グループ〃はシステム上で重複しな いように付けられた数字による識別子、、、メンバーリスト〃はそのグループに 属するユーサー名を "," で区切って並べたものである。 4.1.2 端末管理 最近では計算機にシリアル回線で接続されたキャラクタ端末からログイン するということも少なくなった。しかし、プリンタ、モデムの接続など、ま だまだシリアル回線は使用されている。シリアル回線を使用するためには回 線の転送速度、制御文字の取り扱いなどをシステムが知っている必要があり、 UNIX ではこれらのデータベースをファイルとして持っている。 ■回線情報 /etc/ttys UNIX では回線の初期化情報を / etc / ttys に記述している。 /etc/ttys は以 下のような 4 つのフィールドからなる。 デバイス名 初期化コマンド 端末タイプ フラグ / 初期化前コマンド 、、デバイス名クはデバイスファイル名の / dev を省略した名前である。この中 には実デバイスだけでなく、 ttypXX などの仮想デバイスも含まれている。 133
4 章システム環境の設定と管理 もちろん独自に新たなシェルスクリプトを用意し、それを /etc/rc から呼び 出すようにすることも可能である。 / etc / rc はシステムの立ち上げ時に i Ⅱ it によって自動的に実行される。た こでいう立ち上げ時というのはシングルューザーモードからマルチ ューザーモードに移行するときのことをいう。 ここで注意が必要なのは、 / etc / rc の実行は i Ⅱ it が子プロセスとしてシェ ルを起動して行っているのでその時点では標準入出力が設定されておらず、 標準入出力を使っているコマンドを使うときはくク 、、 > クを使って明示的に 入出力先を設定する必要があることである。 /etc/rc 、 /etc/rc. local の使い方のコツは一般的な記述をしておいて各ホ ストの設定は変数にしておくことである。通常、 rc ファイルではコマンドを 実行するとき、次のようにしておくとよい。 "YES" —a —f /usr/local/canna/bin/cannaserver ] ; if [ ${cannaserver} then echO ) Cannaserver : rm —f /var/spool/canna/lock/. CANNALOCK /usr/local/canna/bin/cannaserver f i あらかしめ rc ファイルの先頭で各ホスト用の設定ファイルを、 . 〃を使って /etc/localconfig のように実行しておき、 C annas e rve r=YES その中で などとする。これによって複数のホストを管理する場合に、そのホストの設 定を分かりやすくすることができる。 さらに複雑な設定をしたい方は 7 章のシェルスクリプトを参照してほしい。 4.1.10 自動実行 BSD では指定された時間に、指定されたコマンドを実行するために cron システムが用意されている。 cron はデーモンとして常に BSD システム上 174