Catch up with rev 1.39

Submitted by:	SUZUKI Koichi <metal@gc5.so-net.ne.jp>
This commit is contained in:
Kazuo Horikawa 2003-01-13 05:09:25 +00:00
parent 84c8706b96
commit b001151637
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=15636

View file

@ -1,5 +1,8 @@
.\" $NetBSD: passwd.5,v 1.12.2.2 1999/12/17 23:14:50 he Exp $
.\"
.\" Copyright (c) 1988, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\" Portions Copyright (c) 1994, Jason Downs. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
@ -30,27 +33,43 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)passwd.5 8.1 (Berkeley) 6/5/93
.\" %FreeBSD: src/share/man/man5/passwd.5,v 1.26.2.5 2002/02/01 15:51:18 ru Exp %
.\" %FreeBSD: src/share/man/man5/passwd.5,v 1.39 2002/11/29 11:39:19 ru Exp %
.\"
.\" $FreeBSD$
.\"
.\" WORD: NIS/YP INTERACTION NIS/YP との相互作用 [yppasswd.1]
.\" WORD: accounting アカウンティング (パスワード期限等の意味)
.\" WORD: epoch 基準時点
.Dd September 29, 1994
.Dd January 16, 1999
.Dt PASSWD 5
.Os
.Sh 名称
.Nm passwd
.Nm passwd ,
.Nm master.passwd
.Nd パスワードファイルのフォーマット
.Sh 解説
.Nm
ファイルは改行で区切られたレコードから成ります。
ユーザごとに 1 レコードが対応し、
コロン
.Pq Ql \&:
で区切られた 10 個の欄が含まれます。
これらの欄は以下の通りです:
ファイルは、ローカルに保持しているパスワード情報の情報源です。
これらは Hesiod ドメインにおける
.Sq passwd
.Sq uid
や、
.Tn NIS
マップの
.Sq passwd.byname ,
.Sq passwd.byuid ,
.Sq master.passwd.byname ,
.Sq master.passwd.byuid
と共に使用され、
.Xr nsswitch.conf 5
によって制御されます。
.Pp
.Nm master.passwd
ファイルは root からのみ読み取り可能で、改行で区切られたレコードから成ります。
ユーザごとに 1 レコードが対応し、コロン (``:'') で区切られた
10 個のフィールドが含まれます。
これらのフィールドは以下の通りです:
.Pp
.Bl -tag -width password -offset indent
.It name
@ -60,11 +79,11 @@
.Em 暗号化された
パスワード。
.It uid
ユーザのid
ユーザの ID
.It gid
ユーザのログイングループ id
ユーザのログイングループ ID
.It class
ユーザのログインクラス
ユーザの一般的な分類 (未使用)
.It change
パスワードの変更時間。
.It expire
@ -77,50 +96,51 @@
ユーザのログインシェル。
.El
.Pp
最初の空白文字でない文字がポンド記号 (#) であるような行は注釈であり、無視
されます。スペース、タブ、改行だけからなる空行もまた無視されます。
.Nm
ファイルは、
.Xr pwd_mkdb 8
によって
.Nm master.passwd
ファイルから生成されます。
その際に、class, change そして expire フィールドは削除され、
password フィールドは ``*'' に置換されます。
.Pp
.Ar name
欄はコンピュータアカウントにアクセスするのに用いられるログインであり、
フィールドはコンピュータアカウントにアクセスするのに用いられるログインであり、
.Ar uid
欄はそれに結び付けられた数字です。これらはファイルアクセスを制御するので、
両方共そのシステム (またしばしば複数のシステムにわたる 1 つのグループ) の中
で一意であるべきです。
フィールドはそれに結び付けられた数字です。
これらはファイルアクセスを制御するので、両方共そのシステム
(また、しばしば 1 まとまりの複数のシステム) の中で一意であるべきです。
.Pp
同じログイン名や同じ UID のエントリを複数持つことは可能で
すが、普通それは誤りです。これらのファイルを取り扱うルーチンはしばしばそ
の複数エントリの 1 つだけを返しますし、
そしてそれはランダムな選択によるものです。
同じログイン名や同じユーザ ID のエントリを複数持つことは可能ですが、
普通それは誤りです。
これらのファイルを取り扱うルーチンは、しばしばその複数エントリの
1 つだけを返しますし、それはランダムな選択によるものです。
.Pp
ログイン名は決してハイフン
.Pq Ql \&-
で始めてはいけません。また、メーラを混乱させる傾向にあるので、大文字やドット
.Pq Ql \&.
も絶対に名前の一部にしないことを強く推奨します
ログイン名は決してハイフン (``-'') で始めてはいけません。
また、メーラを混乱させやすいので、大文字やドット (``.'') も
名前の一部にしないことを強く推奨します。
歴史的にユーザデータベース中でフィールドを区切るのに使われてきたため、
どのフィールドもコロン (``:'') を含んではなりません
.Pp
password はパスワードの
password フィールドはパスワードの
.Em 暗号化された
形です。
.Ar password
欄が空ならば、そのマシンへアクセスするのに何のパスワードも必要としないで
しょう。これはほとんど恒常的に誤りです。これらのファイルは暗号化された
ユーザパスワードを含んでいるので、
適当な権利無しにはいかなる人によっても可読であっ
てはいけません。管理上のアカウントは 1 個のアスタリスク
.Ql \&*
を含むパスワード欄を有しており、これは通常のログインを許しません。
フィールドが空の場合、マシンへのアクセスにはパスワードを要求されません。
このようにすることは、ほとんど常に誤りです。
これらのファイルは暗号化されたユーザパスワードを含んでいるので、
適切な権限の無い人から読み取り可能にしておくべきではないでしょう。
.Pp
group 欄はユーザがログインした上で位置付けられるグループです。このシステムは
マルチグループ(
group フィールドは、ユーザがログインした際に位置付けられるグループです。
このシステムではマルチグループ(
.Xr groups 1
参照)
をサポートしますが、この欄はユーザの 1 次グループを指名します。
2 次グループのメンバは
.Pa /etc/group
の中で選ばれます。
参照) をサポートしているので、
このフィールドにはほとんど特別な意味はありません。
.Pp
.Ar class
欄はユーザのログインクラスに対するキーです。ログインクラスは
フィールドは、ユーザのログインクラスに対するキーです。
ログインクラスは
.Xr login.conf 5
の中で定義されます。
.Xr login.conf 5
@ -129,550 +149,147 @@ group
形式のデータベースです。
.Pp
.Ar change
.Dv GMT
フィールド
.Dv UTC
における基準時点からの秒数を表したものであり、
この時までにアカウントに対するパスワードを変更する必要があります。
パスワードエージング機能をなくすには、
この欄を空欄にしておくか 0 をセットしておけば良いです。
パスワードの時限機能をなくすには、このフィールドを空にしておきます。
.Pp
.Ar expire
.Dv GMT
フィールド
.Dv UTC
における基準時点からの秒数を表したものであり、
その時にアカウントが消滅します。
アカウント再設定機能をなくすには、
この欄を空にセットしておくか 0 をセットしておけば良いです。
アカウントの時限機能をなくすには、このフィールドを空にしておきます。
.Pp
.Ar gecos
欄はコンマ
.Pq Ql \&,
で区切られた以下のような副欄を通常含んでいます:
フィールドは、コンマ (``,'') で区切られた以下のようなサブフィールドを
通常含んでいます:
.Pp
.Bl -bullet -compact -offset indent
.It
.Bl -tag -width office -offset indent -compact
.It name
ユーザのフルネーム
.It
ユーザの職場の位置
.It
.It office
ユーザのオフィス番号
.It wphone
ユーザの職場の電話番号
.It
.It hphone
ユーザの自宅の電話番号
.El
.Pp
この情報は
フィンガープログラム
.Xr finger 1
によって利用され、最初の欄はシステムのメーラ
によって使われます。fullname 欄内にアンパサンド文字
.Pq Ql \&&
が現われると、この欄を使うプログラムはそれをそのアカウントのログイン名の
大文字版に置き換えます。
フルネームは (``&'') を含むことができます。
これは、gecos フィールドが表示される時や、
.Xr finger 1 ,
.Xr sendmail 8
などの様々なプログラムで使用される時に、
ログイン名をキャピタライズしたものに置換されます。
.Pp
ユーザのホームディレクトリは、ユーザがログインして位置付けられる完全な
.Tn UNIX
オフィスと電話番号フィールドは
.Xr finger 1
によって使われていますし、
その他のアプリケーションでもおそらく使われています。
.Pp
ユーザのホームディレクトリは、ログインした時にユーザが置かれる完全な
.Ux
パス名です。
.Pp
shell 欄はユーザの好むインタプリタです。
shell フィールドは、ユーザの好みのコマンドインタプリタです。
.Ar shell
欄になにも無ければ Bourne シェル
フィールドになにも無ければ Bourne シェル
.Pq Pa /bin/sh
が仮定されます。セキュリティ上の理由により、シェルがシステムへのアクセス
を許さないスクリプト (例えば
.Xr nologin 8
スクリプト) に設定されている場合、いかなる環境変数も渡されないように配慮さ
れるべきです。
.Xr sh 1
については、これは
.Fl p
フラグを指定することで可能です。これが他のシェルでどのように行なわれるか
は、特定のシェルの文書を調べてください。
.Sh YP/NIS との相互作用
.Ss NIS パスワードデータへのアクセスを可能にする
システム管理者は
.Pa /etc/master.passwd
ファイルに特別なレコードを付け加えることによって、パスワード情報について
NIS/YP を用いるように
.Tn FreeBSD
を設定できます。ハッシュされたパスワードデータベースおよび
.Pa /etc/passwd
ファイル (
.Pa /etc/passwd
は絶対に手動で編集してはいけません) に変更が適切にマージされるように、
エントリは
.Xr vipw 8
で付加するべきです。別の方法としては、なんらかの方法で
.Pa /etc/master.passwd
を修正した後、
.Xr pwd_mkdb 8
を用いてパスワードデータベースを手動で更新することができます。
が指定されたものと解釈します。
.Sh HESIOD サポート
.Xr nsswitch.conf 5
.Sq passwd
データベースとして
.Sq dns
が指定されていた場合、
.Nm
検索は
.Sq passwd
Hesiod ドメインから開始されます。
.Sh NIS サポート
.Xr nsswitch.conf 5
.Sq passwd
データベースとして
.Sq nis
が指定されていた場合、
.Nm
検索は
.Sq passwd.byname ,
.Sq passwd.byuid ,
.Sq master.passwd.byname
そして
.Sq master.passwd.byuid
.Tn NIS
マップから開始されます。
.Sh COMPAT サポート
.Xr nsswitch.conf 5
.Sq passwd
データベースとして
.Sq compat
が指定されており、
.Sq passwd_compat
データベースとして
.Sq dns
.Sq nis
のどちらかが指定されていた場合、
.Nm
ファイルは、ユーザ名とネットグループに基づいた、
.Sq +/-
による標準的な排除と取り込み機能もサポートします。
.Pp
NIS を活性化するための最も簡単な方法は、名前欄にプラス符号
.Pq Ql \&+
だけを持つ、
以下のような空のレコードを付け加えることです。
.Bd -literal -offset indent
+:::::::::
.Ed
.Ql \&+
は、
.Tn FreeBSD
の標準 C ライブラリの
.Xr getpwent 3
ルーチンに対し、
検索において NIS パスワードマップを使用開始するよう指示します。
``-'' (マイナス符号)によって開始された行は、
それ以降の ``+'' (プラス符号) によってマークされた取り込みからは排除されます。
.Pp
上記のエントリは
.Em ワイルドカード
エントリとして知られていることに注意してください。なぜなら、それはすべての
ユーザと一致し (他に情報を持たない
.Ql \&+
は、全員に一致します)、
全 NIS パスワードデータを無変更にて引き出すことを許します。
一方、
NIS エントリで
.Ql \&+
の次にユーザ名やネットグループ名を指定することによって、
どのようなデータが NIS パスワードマップから展開されるのか、
およびそれがどのように解釈されるのかについて、
管理者が影響を与えることができます。
この特徴を示す、少数のレコード例を挙げます (1 つの
.Pa master.passwd
ファイル中には複数の NIS エントリを持つことが可能であることに注意):
.Bd -literal -offset indent
-mitnick:::::::::
+@staff:::::::::
+@permitted-users:::::::::
+dennis:::::::::
+ken:::::::::/bin/csh
+@rejected-users::32767:32767::::::/bin/false
.Ed
特定のユーザ名は明示的にリストされますが、ネットグループは
.Ql \&@
を前に付けて表されます。
上の例では、
.Dq staff
および
.Dq permitted-users
ネットグループ
のユーザは、NIS から読まれ無変更で使用されるパスワード情報を持ちます。
言い換えれば、それらのユーザはそのマシンに通常のアクセスを許される
ということです。ユーザ
.Dq ken
および
.Dq dennis
は、
ネットグループを通じてではなく明示的に名前が指定されており、
NIS から読まれるパスワード情報を持ちます。
.Em 例外
は、ユーザ
.Dq ken
のシェルが
.Pa /bin/csh
に再マップされることです。
これは、NIS パスワードマップで指定されたシェルの値が、ローカル
.Pa master.passwd
ファイルの特別な
NIS エントリで指定された値によって上書きされることを意味します。
ユーザ
.Dq ken
は csh シェルを割り当てておいても良いかも知れません。
なぜなら、
政治的あるいは技術的な理由でクライアントマシンにインストールされていない
別のシェルを、彼の NIS パスワードエントリに指定されているかもしれないためです。
他方、
.Dq rejected-users
ネットグループのユーザは、その UID、
GID、シェルが不正な値で上書きされているのでログインできなくなります。
行の 2 番目の文字が ``@'' (単価記号) の場合、
その操作は
.Ar name
フィールドの残りの文字列で指定されるネットグループ中の
すべてのエントリに対して行われます。
そうでない場合、
.Ar name
フィールドはユーザ名を指定するものと解釈されます。
.Pp
ユーザ
.Dq mitnick
は、そのエントリが
.Ql \&+
ではなく
.Ql \&-
で指定されているので、
完全に無視されることになります。
マイナスエントリは、
ある NIS エントリを完全に遮断するために用いることができます。
このような方法でパスワードデータが除外されたユーザは、
システムから全く認識されません。(マイナスエントリで指定された
上書き情報は無視されます。
なぜなら、システムが最初に認識しないことにしたユーザの上書き情報を処理
することは無駄だからです。)
一般にマイナスエントリは、
ある権限のあるネットグループのメンバとなってアクセスを許されるかもしれない
ユーザを特別に除外するために使用します。
例えば
.Dq mitnick
.Dq permitted-users
ネットグループのメンバであり、
いかなる理由があってもそのネットグループ内に留まることを許す必要がある場合
(おそらくそのドメイン内の他のマシンにアクセスすることを保証するため)、
管理者はマイナスエントリを使用することにより、
特定のシステムへのアクセスを拒否し続けるこ
とができます。また、アクセスを許されたユーザおよびその残りを削除したよう
なよくありそうな混み入ったユーザのリストを生成するよりは、むしろアクセスを
許されないユーザを明示的にリストする方が容易なことが多いです。
.Pp
プラスおよびマイナスエントリは、先行一致優先で最初から最後の順で評価されま
す。これはシステムが特定のユーザに一致する最初のエントリだけを使用する
ことを意味します。
同じ例を使用すると、
.Dq staff
ネットグループと
.Dq rejected-users
ネットグループの両方のメンバとなっているようなユーザ
.Dq foo
は、
上の例では
.Dq rejected-users
のエントリの前に
.Dq staff
のエントリがありますので、
システムに許可されます。もし順序が逆なら、今度はユーザ
.Dq foo
.Dq rejected-users
として認識され、アクセスは拒否されます。
.Pp
最後に、
.Pa /etc/master.passwd
ファイルの NIS アクセスエントリで指定されたユーザまたはネットグループ
のどれとも一致しない NIS パスワードデータベースレコードは、(マイナスエントリ
を使って指定したすべてのユーザと共に) すべて無視されます。先に示した例
ではリストの最後にワイルドカードエントリが無いので、
.Dq ken
``+'' トークンは、
.Ar name
フィールドに単独で現れても構いません。
この場合、Hesiod ドメイン
.Nm
(
.Sq passwd_compat: dns
を指定した時)、もしくは
.Sq passwd.byname
.Dq dennis
.Dq staff
ネットグループと
.Dq permitted-users
ネットグループとを除くすべてのユーザを、
システムは権限があるユーザとして認識しないでしょう。
.Dq rejected-users
ネットグループは認識されますが、
全メンバのシェルは再マップされますので、
アクセスは拒否されるでしょう。他のすべての NIS パスワードレコードは無視され
るでしょう。 管理者は以下のようなワイルドカードエントリをリストの最後に
付けても良いでしょう。
.Bd -literal -offset indent
+:::::::::/sbin/nologin
.Ed
このエントリは他のすべてのエントリと一致しないすべてのユーザを一挙にとらえる
働きをします。
必ずしもログインアクセスを許可せずに、
特定の
NIS ドメイン内の全ユーザをシステムが認識可能であることが望ましいときには、
このテクニックが有効なことがあります。
ログインシェルとシェルスクリプトを使用するときのセキュリティに関する事柄
について、シェル欄の記述を参照してください。
.Sq passwd.byuid
.Tn NIS
マップ (
.Sq passwd_compat: nis
を指定した時) のどちらかから、すべてのユーザが取り込まれます。
.Pp
この
.Pa 上書き
機能の主な用途は、
管理者が NIS クライアント上でアクセス制限を強化可能とすることです。
単に特定のネットグループに対してユーザを追加したり削除したりするだけで、
そのユーザにあるマシン群へのアクセスを許可し、
かつ他のマシン群へのアクセスを拒否することができます。
ネットグループデータベースもまた NIS 経由でアクセスできるので、
1 個所すなわち NIS マスタサーバからアクセス制限を管理できます。
一旦ホストのアクセスリストが
.Pa /etc/master.passwd
に設定されると、新にネットグループが作られない限りそれは再度変更する必要
はありません。
.Sh
.Ss NIS 経由のシャドウパスワード
.Tn FreeBSD
はシャドウパスワード法を採用しており、
ユーザの暗号化されたパスワードはスーパユーザだけが読み書き可能な
.Pa /etc/master.passwd
および
.Pa /etc/spwd.db
にのみに記憶されます。
暗号化されたパスワードをパスワード推測プログラムに通すことにより、
ユーザが他のユーザアカウントに対して不正アクセスすることを防ぐためです。
NIS にはパスワード隠蔽のための標準的な方法がありません。
これは、
パスワードデータをすべて NIS パスワードマップに置き換えることは、
.Tn FreeBSD
のパスワード隠蔽システムのセキュリティを無効にしてしまうことを意味します。
.Pp
.Tn FreeBSD
にはこの問題を回避するのに役立つ少数の特別な特徴が備わっています。
.Tn FreeBSD
NIS クライアントと
.Tn FreeBSD
NIS サーバとの間でパスワード隠蔽を実装することは可能です。
.Xr getpwent 3
ルーチンは
.Pa /etc/master.passwd
と同じデータを含む
.Pa master.passwd.byname
.Pa master.passwd.byuid
マップを検索します。マップが存在すれば
.Tn FreeBSD
は標準の
.Pa passwd.byname
および
.Pa passwd.byuid
マップの代りにそれらをユーザ認証に利用しようとします。
.Tn FreeBSD
.Xr ypserv 8
はまたクライアントの要求をチェックして、
クライアントの要求が特権ポートから来たことを確認します。
スーパユーザのみが特権ポートにアクセスすることが許されるので、
要求しているユーザがスーパユーザであるか否か判断可能です。
.Pa master.passwd
マップにアクセスする権限の無いユーザからのすべての要求は拒否されるでしょう。
すべてのユーザ認証プログラムはスーパユーザの権限で実行されるので、
ユーザの暗号化されたパスワードデータへの必要なアクセスを持ちますが、
通常ユーザはパスワード情報を含まない標準
.Pa passwd
マップへのアクセスのみ許されます。
.Pp
この特徴は
.Tn FreeBSD
以外のシステムがある環境では利用できないことに注意してください。
また、ネットワーク
に無制限にアクセスできる真に限定されたユーザは依然
.Pa master.passwd
マップを危うくすることにも注意してください。
.Ss NIS の上書きに伴なう UID および GID の再マップ
.Tn SunOS
や Sun の NIS コードを利用しているオペレーティングシステムとは異なり、
.Tn FreeBSD
ではユーザが NIS
.Pa passwd
エントリ中の
.Pa すべて
の欄を上書きすることを許しています。例えば以下のような
.Pa /etc/master.passwd
エントリを考えてみましょう。
.Bd -literal -offset indent
+@foo-users:???:666:666:0:0:0:Bogus user:/home/bogus:/bin/bogus
.Ed
このエントリにより、`foo-users' ネットグループ中のすべてのユーザは、
UID、GID、パスワードを含めて
.Pa すべて
のパスワード情報を上書きされます。この結果、彼等のパスワードは不正な
値に再マップされるので、すべての `foo-users' はシステムから締め出さ
れることになるでしょう。
.Pp
以下のように NIS ワイルドカードエントリを使う習慣のある人が多いので、
このことは覚えておくべき重要なことです。
.Bd -literal -offset indent
+:*:0:0:::
.Ed
これはしばしば新米の
.Tn FreeBSD
管理者が以下のように
.Pa master.passwd
ファイルの NIS エントリを選んでしまうことにつながります。
.Bd -literal -offset indent
+:*:0:0::::::
.Ed
更に悪く、以下のようにしてしまうこともあります。
.Bd -literal -offset indent
+::0:0::::::
.Ed
.Pa master.passwd
.Sy ファイルには「絶対に」このようなエントリは入れないでください!!
最初のものは、
すべてのパスワードを
.Ql \&*
に再マップし (これは誰もログインできなくします)、
すべての UID および GID を 0 に再マップする (これは皆をスーパユーザにします)
ことを
.Tn FreeBSD
に指示します。
2 番目のものは全 UID および GID をちょうど 0 にマップします
が、これは
すべてのユーザが root になってしまう
ことを意味します!
.Pp
.Ss NIS 上書き評価の互換性
Sun が最初に
.Xr getpwent 3
ルーチンに NIS サポートを追加したとき、
.Tn SunOS
のパスワードファイル
.Pa /etc/passwd
はプレーン
.Tn ASCII
フォーマットであるということが考慮されていました。
.Tn SunOS
のドキュメントによれば、パスワードファイルに
.Ql \&+
エントリを付け加えると、
パスワードファイル中の
.Ql \&+
エントリがある位置に
NIS パスワードデータベースの内容が
.Dq 挿入
されます。例えば
管理者が
.Pa /etc/passwd
の中央に
.Ql \&+::::::
エントリを置いた場合、
NIS パスワードマップの全体の内容が
パスワードファイルの中央にコピーされたかのように現われるでしょう。
管理者が
.Ql \&+::::::
エントリを
.Pa /etc/passwd
の中央と最後の両方に置けば NIS パスワードマップは
2 度現われることになるでしょう。
すなわち 1 度目はそのファイルの中央に現れ、もう 1 度は最後に現れます
(単純なワイルドカードの代りに上書きエントリを用いることで、
他の組み合わせが可能です)。
.Pp
これに対し
.Fx
では単一の
.Tn ASCII
パスワードファイルを持つというわけではありません。
.Tn FreeBSD
ではハッシュ化されたパスワードデータベースを持ちます。このデータベースで
は最初や中央や最後を容易に定義できませんので、
.Tn SunOS
に 100% 互換の手法を設計することは非常に困難です。例えば
.Tn FreeBSD
.Fn getpwnam
関数と
.Fn getpwuid
関数は、線形検索ではなくハッシュデータベースに直接問い合わせするように設計さ
れています。パスワードデータベースが大きいシステムでは、
このアプローチの方が高速です。
しかしデータベースへ直接問い合わせを利用するとき、
システムは元のパスワードファイルの順序を知り得ませんし気にしませんので、
.Tn SunOS
が使用するものと同じ上書き論理は容易に適用できません。
.Pp
代りに
.Tn FreeBSD
ではすべての NIS 上書きエントリを一緒のグループにまとめ、それらから 1 つ
のフィルタを作ります。各 NIS パスワードエントリはちょうど 1 回上書きフィルタ
に対して比較され、それに応じて取り扱われます。フィルタがエントリを変更せ
ずに通すことを許すならエントリは変更されないものとして取り扱われ、フィルタ
が欄の再マップを要求するなら欄は再マップされ、フィルタが明白な除外を要求
するなら(すなわちエントリが
.Ql \&-
上書きと一致するなら) エントリは無視され、
エントリがフィルタ指定のどれとも一致しないならエントリは捨てられます。
.Pp
また、NIS の
.Ql \&+
および
.Ql \&-
エントリ自身は、
.Pa /etc/master.passwd
の中で指定された順序で取り扱われることに再度注意してください。
それ以外の方法で取り扱うと、予測不可能な振舞いとなってしまうからです。
.Pp
結局のところ、データベースのパラダイムを保ちつつ
.Tn FreeBSD
では
.Tn SunOS
と非常によく似た動作を行いますが、
.Xr getpwent 3
関数は
.Tn SunOS
のものとはいくぶん異なった振舞いをします。主な違いは以下の通りです。
.Bl -bullet -offset indent
.It
NIS パスワードマップの各々のレコードは、ローカルパスワード空間のパスワードに
1 度だけマップすることができます。
.It
NIS の
.Ql \&+
および
.Ql \&-
のエントリの位置は、
NIS パスワードレコードがパスワード空間にマップされる場所に
必ずしも影響を与えません。
.El
.Pp
あらゆる
.Tn FreeBSD
の構成のうち 99% においては NIS クライアントの振舞いは
.Tn SunOS
や他の同種のシステムのそれと区別できないものとなるでしょう。それでもこれ
らのアーキテクチャ的な違いを知っておくことは必要です。
.Pp
.Ss NIS 上書きに関しネットグループの代りにグループを用いる
.Tn FreeBSD
はネットグループではなくユーザグループに基づいた上書き照合を行なう能力
を提供します。例えば NIS エントリが以下のように指定されたとき、
.Bd -literal -offset indent
+@operator:::::::::
.Ed
システムはまず
.Ql operator
と呼ばれるネットグループに対してユーザを
照合しようとします。
.Ql operator
ネットグループが存在しないとき、
システムは代りに通常の
.Ql operator
グループに対して照合しようとします。
.Ss FreeBSD の古いバージョンからの動作の変遷
.Tn FreeBSD
の NIS/YP の取り扱いについてはいくつかのバグフィックスと改善がありました。
そのいくつかは動作上の変化をもたらしました。動作上の変化は一般に良い方向
にありますが、ユーザおよびシステム管理者がそれらについて知っておくことは
重要です。
.Bl -enum -offset indent
.It
2.0.5 以前のバージョンでは、逆方向検索 (つまり
.Fn getpwuid
を用いる) には上書きは適用されませんでした。つまり、
.Fn getpwuid
.Fn getpwnam
が認識しないログイン名を返すことがありました。
これは現在では
.Pa /etc/master.passwd
で指定された上書きをすべての
.Xr getpwent 3
関数に適用することで解決されました。
.It
.Fx 2.0.5
以前では、ネットグループの上書きは全く動作しませんでした。
これは主に
.Tn FreeBSD
が NIS を通してネットグループを読むことをサポートしなかったことが原因です。
これもまた修正され、
.Tn SunOS
や同種の NIS を使用可能なシステムと全く同様に、
ネットグループを指定可能となりました。
.It
.Tn FreeBSD
は現在 NIS サーバの能力を持っており、標準第 6 版形式の
.Pa passwd
マップに加え
.Pa master.passwd
NIS マップの使用もサポートしています。このことは、NIS サーバとして
.Tn FreeBSD
システムを利用するなら、変更情報、有効期限の情報、クラス情報を指定可能であ
るということを意味しています。
.El
エントリの
.Ar uid
.Ar gid
フィールドが空でない場合、Hesiod ドメインもしくは
.Tn NIS
マップから取り込まれた情報を、指定された数字で上書きします。
同様にして、
.Ar gecos ,
.Ar dir ,
.Ar shell
フィールドにテキストがあった場合、Hesiod や
.Tn NIS
を介して取り込まれた情報を上書きします。
いくつかのシステムでは、
.Ar passwd
フィールドも上書きできます。
.Sh 関連ファイル
.Bl -tag -width /etc/master.passwd -compact
.Bl -tag -width ".Pa /etc/master.passwd" -compact
.It Pa /etc/passwd
パスワードを除いた
.Tn ASCII
@ -695,39 +312,20 @@ NIS
.Xr login 1 ,
.Xr passwd 1 ,
.Xr getpwent 3 ,
.Xr login_getclass 3 ,
.Xr login.conf 5 ,
.Xr netgroup 5 ,
.Xr adduser 8 ,
.Xr pw 8 ,
.Xr pwd_mkdb 8 ,
.Xr vipw 8 ,
.Xr yp 8
.Pp
.%T "Managing NFS and NIS"
(O'Reilly & Associates)
.Sh バグ
ユーザ情報は他のどこか に入れるべき (そして結局は入れることになる) でしょう。
ユーザ情報は他のどこかに入れるべき (そしていつかは入れる) でしょう。
.Pp
YP/NIS パスワードデータベースでは、
普通のユーザには暗号化されたパスワードが見えてしまいます。したがって
.Pa master.passwd
マップのシャドウパスワードおよび
.Tn FreeBSD
.Xr ypserv 8
サーバを利用しないと、
簡単にパスワードクラッキングを許してしまうことになります。
.Pp
.Pa master.passwd
タイプのマップの使用をサポートする
.Tn FreeBSD
.Xr ypserv 8
を使用しないと、
YP/NIS パスワードデータベースは
古いスタイル (第 6 版) のフォーマットになります。これは、
.Tn FreeBSD
システムを標準 NIS サーバのクライアントとして利用するとき、
ユーザのログインクラスやパスワード期限等の
現在のフォーマットにある欄の値については
サイトワイドな値が利用できなくなることを意味します。
ファイル中で
.Sq compat
の排除を取り込みの後に行うことは、予期しない結果をもたらすでしょう。
.Sh 互換性
パスワードファイル形式は
.Bx 4.3
@ -737,12 +335,10 @@ YP/NIS
.Dq class ,
.Dq change ,
.Dq expire
欄が追加されましたが、デフォルトでは無効になっています。
これらの欄を設定するには
.Xr vipw 8
もしくは
.Xr pw 8
を使用してください。
フィールドが追加されましたが、デフォルトでは無効になっています。
現在 class は実装されていませんが、change と expire は実装されています。
これらを設定するには、基準時点から今日までの秒数に、
好きなだけオフセットを秒数にして加えたものを使用してください。
.Bd -literal -offset indent
BEGIN { FS = ":"}
{ print $1 ":" $2 ":" $3 ":" $4 "::0:0:" $5 ":" $6 ":" $7 }
@ -751,15 +347,18 @@ BEGIN { FS = ":"}
.Nm
ファイルは
.At v6
で現われました。YP/NIS の機能は
.Tn SunOS
を雛型として
.Fx 1.1
で初めて現われました。上書き機能は
.Fx 2.0
において新しく組み込まれました。上書き機能はネットグループを適切に
サポートするために
.Fx 2.0.5
で更新されました。注釈のサポートは
.Fx 3.0
で初めてサポートされました。
で登場しました。
.Pp
.Tn NIS
.Nm
ファイル形式は、SunOS で初めて登場しました。
.Pp
Hesiod サポートは、
.Fx 4.1
で初めて登場しました。
これは
.Nx
プロジェクトから取り込まれました。
こちらでは、
.Nx 1.4
で初めて登場しました。