10.9 NIS でシャドゥパスワードをサポートする・ 193 どうでしようか。通常の NIS を使わない設定では、ユーザは passwd を起動し、新 しいパスワードを入力して、ローカル passwd ファイルを更新します。これは NIS では不可能です。 passwd ファイルはもうローカルには存在しませんし、ユーザがパ スワードを変更するたびに NIS サーバにログインさせるわけにもいかないからです。 そのため、 NIS では yppasswd という、 passwd に代わるコマンドを提供しており、 それが NIS の下で似たような働きをします。サーバホスト上のパスワードを変更す る時、 yppasswd は RPC を介してそのホスト上の yppasswdd デーモンと連絡をと り、更新されたパスワード情報をそれに渡します。通常は次のようにして、普通の # 1 Ⅱ yppasswd passwd # mv pass wd passwd. 01d # cd /bin passwd を yppasswd に変更しておきます。 の目から隠すことができます。 2 から起動させなければいけません。これによって、 NIS の舞台裏をユーザ さらに、サーバ上に rpc. yppasswdd をインストールして、それを rc. inet ードを暗号化された形ですら読むのを防ぐために発明されました。他方、 NIS かり厄介です。シャドゥパスワードは、一般ユーザがほかのユーザのパスワ シャドゥパスワードファイルに対して NIS を使用するのは、ちょっとば 10.9 N 旧でシャドウノヾスワードをサポートする 必要です。たとえば、 NIS を介してユーザ ID 等を配布し、一方でそのネットワーク もちろん、 NIS とシャドゥパスワードを同時に使用するには、何らかの小細工が passwd ファイルを生成し、そのファイルから NIS マップを作ることです。 っとも簡単な方法は、 pwuncov のようなツールを使用して /etc/shadow から適切な うことです。シャドゥパスワードをインストールしてあるなら、それらを共有するも ってパスワードとユーザ情報を配布する唯一の方法は、標準 passwd. * マップを使 現在のところ、このジレンマをきっちりと解決する方法はありません。 NIS によ ゥパスワード本来の目的と対立しています。 はこれらのパスワードをネットワーク全体で利用できるようにしろと要求し、シャド
networks : servlces : protocols : rpc : 10.8 passwd マップと group マップを使用する・ 191 nis CNOTFOUND=return] files files niS files niS files niS 10.8 passwd マップと g 「 oup マップを使用 する NIS の主要な利用目的の 1 つは、 NIS ドメイン中の全ホスト上でユーザとアカウ ント情報の同期をとることです。この目的を達成するために、通常は小さなローカル / etc/passwd ファイルだけを作っておき、 NIS マップからのサイト全体にわたる情 報をそれに追加します。しかし、単に nsswitch. conf の中でこのサービスに対する NIS 参照を有効にするだけでは、まだ十分ではありません。 NIS によって配布されるパスワード情報に頼るときは、まず最初に、ローカル passwd ファイル中にあるユーザ名とユーザ番号の対応が NIS サーバの想定してい るユーザ情報と一致していることを確認しなければいけません。これは、ネットワー ク内のほかのホストから NFS ボリュームをマウントするといった場合にも必要でし よう。 /etc/passwd のユーザ番号や /etc/group の中のグループ番号がマップ中のもの と異なっているときは、そのユーザの所有する全ファイルに対する所有権を調整しな ければいけません。まず、 passwd と group のすべての uid と gid を新しい値に変 更し、変更したユーザの所有するすべてのファイルをみつけて、それらの所有権を変 更しなければいけません。 news のユーザ番号が 9 で、 okir のユーザ番号が 103 で あるとして、それらがあるほかの値に変更されたと仮定しましよう。このような場合 には、以下のコマンドを実行します。 # find / -uid 9 -print 〉 /tmp/uid. 9 # find / -uid 103 -print 〉 /tmp/uid. 103 # cat /tmp/uid. 9 xargs ChOW ・ n news # cat /tmp/uid. 103 ー xargs ChOWIi 0 新しい passwd ファイルがインストールされた状態で、これらのコマンドを実行す ること、そして所有権を変える前に、すべてのファイル名を集めておくことが重要で
180 ・ 10 章 NIS : ネットワーク情報システム 表 10 ー 1 いくつかの標準 NIS マップとそれに対応するファイル Master File /etc/hosts /etc/networks /etc/passwd /etc/group /etc/services /etc/rpc /etc/protocols /usr/lib/aliases Map(s) hosts. byname,hosts. byaddr networks. byname,networks. byaddr passwd. byname,passwd. byuid group. byname,group. bygid services. byname,services. bynumber rpc. byname,rpc. bynumber protocols. byname,protocols. bynumber mail. aliases の完全なリストを取得するには、次のコマンドを実行します。 $ ypcat -x NIS map nickname translation table : ータの負荷を軽くするために、複数のマシンおよびネットワークの複数のセ ークでは、通常 1 つのサーバがあれば十分です。大きなネットワークでは、サーバマ NIS サーバブログラムは、普通は ypserv と呼ばれています。平均的なネットワ "timezone" ー〉 "timezone. byname" "group. adjunct" ー〉 "group. adjunct. byname" "passwd. adjunct" ー〉 "passwd. adjunct. byname" "netid" ー〉 "netid. byname" "publickey" ー〉 "publickey. byname" "netmasks" ー〉 "netmasks. byaddr" "rpc" ー〉 "rpc. bynumber" "ethers" ー〉 "ethers. byname" ” aliases ”ー〉” mail. aliases ” "services" ー〉 "services. byname" "protocols" ー〉 "protocols. bynumber" "hosts" ー〉 "hosts. byname" "networks" ー〉 "networks. byaddr" "group" ー〉 "group. byname" "passwd" ー〉 "passwd. byname" シンとノレ こまでは、「ネットワーク」という言葉の概念を非常にあいまいにしたまま話し に配布されます。 マスターサーバのホスト上にだけ作られます。そして、そこから、すべてのスレープ 1 つをマスターサーバ、それ以外をスレープサーバにして同期をとります。マップは グメント上にサーバをいくつか置いた方がいいでしよう。これらのサーバは、どれか
10.4 NIS サーバを走らせる・ 183 マップのほとんどが、 C ライプラリのライプラリ関数に対応していることに気づくで しよう。たとえば、 passwd 情報を取得するには、一般に getpwnam(3) 関数と getpwuid ( 5 ) 関数が使用されます。それらは、それぞれ与えられたユーザ名または数 値のユーザ ID に対応するアカウント情報を返します。普通の状況の下では、これら の関数は、 /etc/passwd といった標準ファイルを見に行くでしよう。 しかし、 NIS に対応した関数では、この動作が変更されており、ユーザ名または ューザ ID を NIS サーバに探させるための RPC コールが発せられるでしよう。これ は、アプリケーションからはまったく見えません。 NIS 対応の関数は、元のファイ ルに NIS マップに項目を「追加」するか、あるいは「置き換える」わけです。もち ろん、これはそのファイルが実際に変更されるという意味ではなく、アプリケーショ ンにはそのファイルが置き換えられたか、追加されたかのように見えるということで す。 既存 NIS の場合、元の情報に対してどのマップが置き換えられたか、どれが追加 されたかということに関して、いくつかの慣習的な規約がありました。 passwd マッ こうした操作は一歩間 プなどでは、 passwd ファイルの不自然な変更が必要となり、 違えるとセキュリティホールを作ってしまうようなものでした。このような落し穴を 回避するため、 NYS では、クライアント関数がそれぞれ元のファイル、 NIS 、 NIS 十 のどれをどの順序で使用するかを決定する一般的な設定方法を定めています。これに ついては、本章の後のほうで解説します。 10.4 N 旧サーバを走らせる 理論的な解説はこれくらいにして、今度は実際の設定作業に入りましよう。 この節では、 NIS サーバの設定方法を解説します。 NIS サーバがあなたの ネットワーク上ですでに走っているなら、自分でサーバをセットアップする 必要はありません。その場合は、この節を飛ばしてもさしつかえありません。 NIS サーバの実験をしてみるだけの場合でも、同一ネットワーク上です でに用いられている NIS ドメイン名とぶつからないような NIS ドメイン名 を選ぶように注意してください。さもないと、ネットワークサービス全体が破壊され てしまい、たくさんの人々にたいへんな迷惑をかけ、怒らせてしまうでしよう。 0
192 ・ 10 章 NIS : ネットワーク情報システム す。ファイルのグループ所有権を更新するにも、同様のコマンドを使用します。 これを行っておけば、あなたのシステム上の数値 uid と gid は、その NIS ドメイ ン内のほかのすべてのホスト上にあるものと一致するでしよう。次のステップは、ユ ーザとグループ情報に対する NIS 参照を使用可能にする設定行を nsswitch. conf に 追加することです。 # /etc/nsswitch. conf ー passwd and group treatment passwd : nis files niS files group : これは、 login コマンドなどがどこでユーザ情報を探すかに影響を及ばします。ュ ーザがログインしようとしたとき、 login は最初に NIS マップを調べ、その参照が 失敗したら、ローカルファイルに戻ります。通常、ローカルファイルからはほとんど すべてのユーザを削除し、 root と mail のようなシステム運用のためのアカウントに 対するエントリーだけを残しておきます。これは、システム運用に必要な処理が uid をユーザ名に、あるいはユーザ名を uid にマップしなければならないからです。たと えば、管理用の cron ジョブが su コマンドを実行して一時的に news になったり、 UUCP サプシステムが状況報告をメールで知らせるかもしれません。 news と uucp がローカル passwd ファイルにエントリーを持っていなければ、これらのジョブは NIS が落ちた時には無惨にも失敗するでしよう。 こで、 2 つだけ重要な注意をしておきます。 1 つは、これまでに述べた ように、上のセットアップは (util-linux パッケージに含まれているような ) シャドゥパスワードを使わない login コマンド系に対してだけ働くというこ とです。 NIS でシャドゥパスワードを使用する複雑な設定については後ほど解説し ます。もう 1 つは、 passwd ファイルをアクセスするのは login コマンドだけではな く、ほとんどの人々が絶えず使用する ls コマンドもそうであるということです。ー 1 オプションで、 ls はファイルのユーザとグループ所有者のシンポリック名を表示し ます。すなわち、出てきた uid と gid のそれぞれの番号について、 ls は一度づつ NIS サーバに照会するわけです。ローカルネットワークが混雑しているか、あるいは NIS サーバが同じ物理ネットワーク上になくてデータグラムがルータを通過しなければな らない場合、これは処理速度をひどく低下させるでしよう。 しかも、話はこれだけではすみません。あるユーザがパスワードを変更する場合は
12.4 ダイアノインできるようにシステムを設定する・ 239 uugetty と mgetty のログイン処理の違いの説明は、この小節の範囲 を越えています。詳細は、 Greg Hankins 氏による Serial HOWTO およ び getty_ps や mgetty の付属文書を参照してください。 12.4.2 UUCP アカウントを与える 次に、リモートサイトがあなたのシステムにログインし、 UUCP 接続を確立でき るように、ユーザアカウントを設定しなければいけません。一般的には、入ってくる 各システムに別々のログイン名を与えます。たとえば、システム pablo に対してア カウントを設定するときは、ユーザ名を Upablo にすればよいでしよう。 シリアルポート経由でダイアルインするシステムに対しては、通常これらのアカウ ントをシステムのパスワードファイル /etc/passwd に追加しなければいけません。 UUCP ログインは uuguest といった特別なグループとしておくとよいでしよう。そ れらのアカウントのホームディレクトリは、公開スプールディレクトリ /var/spool / uucppublic に設定しておかなければいけません。また、ログインシェルは uucico でなければいけません。 シャドゥパスワード機能がインストールしてあれば、以上の設定を useradd コマ ンドで行うことができます。 # useradd -d /var/spool/uucppublic -G uuguest ー s /usr/lib/uucp/uucico Upablo シャドゥパスワード機能を使用していないときは、次のような行を自分で /etc /passwd に追加しなければいけません。ここで、 5000 と 150 は、それぞれユーザ Upa - b10 とグループ uuguest に割り当てられた uid と gid です。 UpablO : x : 5000 : 150 : UUCP Account : /var/spool/uucppublic : /usr/lib/uucp/uucico アカウントをインストールしたら、 passwd コマンドでパスワードを設定して、ア カウントを有効にします。 TCP 経由で接続してくる UUCP システムを受け入れるには、 uucp ポートに入っ てくる接続要求を処理するために、 inetd をセットアップしなければいけません。 れは、次の行を /etc/inetd. conf に追加することによって行います注 14 。 Se rial HOWTO
pap-secrets ファイル PAP 秘密キーファイル・・ passwd ・・ passwd ファイル path ・ path : ヘッダフィールド PLIP ドライパ・ PLIP 接続・ PLIP インタフェース plipconfig ・ PLIP ・・ pipe ドライノヾ・ P1ng pme PhiI Lapsley ・ Peter Eriksson ・ PC/TCP Paul Mockapetris ・ Paul Mackerras Paul Gortmaker ・ pathtable ・・ paths データベース paths. sample ・ pathalias ファイル pathalias ドライバ pathalias データベース pathalias 経路制御 pathalias 工ントリー 440 ・索 ・・・ 84 , 129 引 ・・ 157 , 160 ・・・ 264 , 267 ・・・ 299 , 310 ・・・ 178 , 184 ・・・ 328 , 365 ・・・ 92 ・・・ 387 ・・・ 258 ・・・ 53 ・・・ 37 ・・・ 143 ・・・ 58 ・・・ 288 ・・・ 276 ・・・ 267 ・・・ 382 ・・・ 288 ・・・ 337 ・・・ 412 ・・・ 139 ・・・ 222 ・・・ 159 ・・・ 266 , 267 , 268 , 286 , 382 ・・・ 16 , 52 , 412 ・・・ 56 , 90 pppd ip-up コマンド pppd デーモン PPP インタフェース PPP サーパ・・ PPP デーモン・・ PPP ドライバ PPP モジュール pppd 『 PracticaI UNIX Security 』 pw_gecos フィーノレド PT R レコード・・ PSEUDONYMS PSEUDONYMNS PSEUDODOMAINS proxy サーノヾ proxy ARP protocol ファイル・ protocol proc ファイルシステム queulen スクリプト ・・ 143 , 144 ・・・ 143 , 155 ・・ 164 , 169 ・・・ 348 ・・・ 340 ・・ 119 ・・・ 322 ・・・ 304 ・・ 131 ・・ 102 ・・・ 169 ・・・ 74 ・・・ 421 ・・ 143 ・・・ 63 ・・・ 161 ・・・ 56 ・・・ 143 ・・・ 152 ・・・ 304 , 306 , 315 , 318 ・・・ 379 ・・・ 412 ・・・ 79 ・・・ 277 ・・・ 412 ・・・ 173 ・・・ 303 ・・・ 369 ・・・ 19 , 284 , 290 ・・・ 217 , 229 ・・・ 217 , 234 ・・・ 222 , 412 RARP (Reverse Address ResoIution Pr0toc01) ・・・ 28 , 54 , 413 point-to-point protocol ・ point-to-point 接続・・ POP ・・ port portmapper ・・ portmapper テ port コマンド port ファイル・ postmaster ーモン POSTMASTERBOUNCE ・ RBADSEQ ・・ rc. inet ・・ rc. inet2 ・・ rc. inet2 スクリプト rc. inet スクリプト rc. net ・ rc. news ・・ rc ファイル rdata Received : reference implementation ・ POST コマンド・ PPP ・・ ・・・ 250 ・・・ 73 ・・・ 80 ・・・ 73 ・・・ 375 ・・・ 117 ・・・ 257 ・・・ 365 ・・・ 372 ・・・ 279 , 375 ・・・ 273 , 366 ・ 12 , 17 , 52 , 79 , 92 , 127 , 130 , 141 , 383 , 412 ・・ XXVIII , References : ヘッダ行 RELAY HOST ・・・ 305 , 306 , 309 , 315 , 323
その他 . Admin/audit ・・ . Admin/audit.locaI Admin ディレクトリ・ . elm/elmrc ・ . forward ファイル・ . rhosts ・ . Sequence /bin ・ /dev/cuaO /dev/cua3 /dev/cual /dev/modem ・ /etc/exports /etc/group ・ /etc/hosts ・・ /etc/hosts. equiv /etc/inetd. conf ・ /etc/named. b00t /etc/nis. conf ・ /etc/nntpserver ・・ /etc/nsswitch. conf /etc/passwd 索 ・・・ 221 ・・・ 170 ・・・ 145 ・・・ 194 ・・・ 189 ・・・ 373 ・・・ 189 ・・・ 112 ・・・ 174 ・・・ 205 ・・・ 219 ・・・ 218 ・・・ 219 ・・・ 219 ・・・ 235 ・・・ 242 ・・・ 174 ・・・ 290 ・・・ 269 ・・・ 252 ・・・ 252 ・・・ 252 ・・・ 191 , 194 引 /etc/services ・ /etc/shadow ・ /etc/yp. conf /etc/yp. conf 設定ファイル・ /home ・ /sbin ・・ /tmp ・・ /usr/bin /usr/bin/rmai 1 /usr/bin/smail /usr/lib/aliases ・・ /usr/lib/elm ・ /usr/lib/news /usr/ lib/news/bi n ・・ /usr/lib/news/bin/batch ・・ /usr/lib/news/bin/input ・・ /usr/lib/news/bin/maint /usr/lib/news/ctl• /usr/lib/smail /usr/lib/smail/config ・ /usr/lib/smail/lists ・ /usr/lib/smail/paths /usr/lib/smail/qualify ・・ /usr/lib/uucp ・・ /usr/local/bin /usr/sbin ・・ /usr/sbin/sendmail /usr/spoo レ ma ⅱ・・ ・・・ 335 , 338 , 341 , 345 , 347 , 353 , 359 , 367 ・・・ 80 , 105 , 111 , 177 , 179 ・・・ 164 , 239 , 279 , 366 ・・・ 179 , 183 , 191 , 239 , 340 , 369 4 引 ・・・ 170 , 234 , 279 , 294 ・・・ 290 ・・・ 274 ・・・ 184 ・・・ 295 ・・・ 286 ・・・ 292 ・・・ 273 ・・・ 356 ・・・ 362 ・・・ 350 ・・・ 269 ・・・ 291 ・・・ 325 ・・・ 274 ・・・ 235 ・・・ 200 ・・・ 238 ・・・ 197 ・・・ 195 ・・ 187 ・・・ 193 ・・・ 335 , 348 ・・・ 353 , 360 ・・・ 275 , 285 , 288 ・・・ 216 , 248 ・・・ 235 , 274 /etc/passwd マップ・ /etc/ppp/options ・ /etc/protocols /etc/rc.local スクリプト・
194 ・ 10 章 NIS : ネットワーク情報システム 内の各ホスト上に /etc/shadow ファイルをインストールする手があります。言うま でもありませんが、この小細工は非常に粗雑ですし、システム管理を簡単にするとい う NIS の目標に反するものです。私の意見では、ユーザによいパスワードを選ばせ る方が、非互換性を生み出す余計なファイルの中にパスワードを隠すよりもずっとま しです。 10.10 既存 N 旧を使用する 現在、標準 libc にあるクライアントプログラムを使用しているなら、 NIS クライ アントを設定する方法は少し異なります。まずはじめに、既存 NIS がサポートする マップは、 hosts 、 passwd 、 group 参照用のものだけです。また、ローカルファイ ルからの情報と NIS マップからの情報を結合する方法も、 NYS のやり方とまったく 異なっています。 たとえば、 NIS パスワードマップを使用するには、 /etc/passwd マップの中のど こかに次の行がなければいけません。 これは、パスワード検索関数が NIS マップを挿入する場所をマークします。 /etc/ group の中へ同様の行 ( 最後の 2 つのコロンなしで ) を挿入すると、 group. * マッ プに対して同じことが行われます。 YP サーバによって提供される hosts. * マップを使用するには、 host. conf ファイ ルの中にある order 行を変更します。たとえば、 NIS 、 DNS 、 /etc/hosts ファイ ルを ( この順序で ) 使用したいなら、この行を次のように変更します。 order yp bind hosts NYS と違って既存の YP コードは、 YP クライアントのためにアクテイプなサー バを見つけるのに ypbind デーモンを使います。 ypbind は、 NIS ドメインがセット され、 RPC の portmapper が開始されてから、プート時に起動されなければいけま せん。 最近まで、 ypbind は RPC をプロードキャストすることによってサーバを探しに
8.11 PPP サーバの設定・ 161 るなら、 pppd ( 8 ) のマニュアルページを見ればもっといろいろな機能について学べま す。 8.11 PPP サーバの設定 サーバとして pppd を動作させるには、コマンド行に適切なオプションを加えるだ けですみます。理想的には、 ppp といった特別なアカウントを作り、必要なオプシ ョンをつけて pppd を呼び出すログインシェルのスクリプトかプログラムを与えてお きます。たとえば、 / etc / passwd に次のような行を加えるわけです。 ppp : * : 500 : 200 : PubIic PPP Account : /tmp : /etc/ppp/ppplogin もちろん、ユーザ ID とグループ ID は上記とは異なってもかまいません。また、 passwd コマンドを使用して上記のアカウントのパスワードを設定しなければいけま せん。 たとえば、 ppplogin スクリプトは次のようになるでしよう。 # !/bin/sh # ppplogin ー script tO fire up pppd on login mesg n stty -echo exec pppd -detach silent modem crtscts mesg コマンドは、ほかのユーザが、たとえば write コマンドなどで tty に書けな いようにします。次の stty コマンドは、文字工コーをオフにします。これをしない と、相手側からの送信がすべてエコーバックされてしまいます。上記でもっとも重要 な pppd オプションは -detach で、これは pppd が tty 制御から取り外されることの ないようにします。もしこのオプションを指定しないと、 pppd はバックグラウンド に移行して、シェルスクリプトから抜けます。すると、シリアルラインがハングアッ プし、接続が切断されます。 silent オプションは、 pppd が送信を始める前に、呼び 出し先のシステムからバケットを受信するまで待つようにします。これは、呼び出し 先のシステムが PPP クライアントを起動するのが遅いときに、転送タイムアウトに なるのを防ぎます。 modem オプションは、 pppd がシリアルポートのモデム制御ラ