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 .\" Copyright (c) 1988, 1991, 1993
.\" The Regents of the University of California. All rights reserved. .\" 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 .\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions .\" modification, are permitted provided that the following conditions
@ -30,27 +33,43 @@
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" From: @(#)passwd.5 8.1 (Berkeley) 6/5/93 .\" 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$ .\" $FreeBSD$
.\" .\"
.\" WORD: NIS/YP INTERACTION NIS/YP との相互作用 [yppasswd.1] .\" WORD: NIS/YP INTERACTION NIS/YP との相互作用 [yppasswd.1]
.\" WORD: accounting アカウンティング (パスワード期限等の意味) .\" WORD: accounting アカウンティング (パスワード期限等の意味)
.\" WORD: epoch 基準時点 .\" WORD: epoch 基準時点
.Dd September 29, 1994 .Dd January 16, 1999
.Dt PASSWD 5 .Dt PASSWD 5
.Os .Os
.Sh 名称 .Sh 名称
.Nm passwd .Nm passwd ,
.Nm master.passwd
.Nd パスワードファイルのフォーマット .Nd パスワードファイルのフォーマット
.Sh 解説 .Sh 解説
.Nm .Nm
ファイルは改行で区切られたレコードから成ります。 ファイルは、ローカルに保持しているパスワード情報の情報源です。
ユーザごとに 1 レコードが対応し、 これらは Hesiod ドメインにおける
コロン .Sq passwd
.Pq Ql \&:
で区切られた 10 個の欄が含まれます。 .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 .Pp
.Bl -tag -width password -offset indent .Bl -tag -width password -offset indent
.It name .It name
@ -60,11 +79,11 @@
.Em 暗号化された .Em 暗号化された
パスワード。 パスワード。
.It uid .It uid
ユーザのid ユーザの ID
.It gid .It gid
ユーザのログイングループ id ユーザのログイングループ ID
.It class .It class
ユーザのログインクラス ユーザの一般的な分類 (未使用)
.It change .It change
パスワードの変更時間。 パスワードの変更時間。
.It expire .It expire
@ -77,50 +96,51 @@
ユーザのログインシェル。 ユーザのログインシェル。
.El .El
.Pp .Pp
最初の空白文字でない文字がポンド記号 (#) であるような行は注釈であり、無視 .Nm
されます。スペース、タブ、改行だけからなる空行もまた無視されます。 ファイルは、
.Xr pwd_mkdb 8
によって
.Nm master.passwd
ファイルから生成されます。
その際に、class, change そして expire フィールドは削除され、
password フィールドは ``*'' に置換されます。
.Pp .Pp
.Ar name .Ar name
欄はコンピュータアカウントにアクセスするのに用いられるログインであり、 フィールドはコンピュータアカウントにアクセスするのに用いられるログインであり、
.Ar uid .Ar uid
欄はそれに結び付けられた数字です。これらはファイルアクセスを制御するので、 フィールドはそれに結び付けられた数字です。
両方共そのシステム (またしばしば複数のシステムにわたる 1 つのグループ) の中 これらはファイルアクセスを制御するので、両方共そのシステム
で一意であるべきです。 (また、しばしば 1 まとまりの複数のシステム) の中で一意であるべきです。
.Pp .Pp
同じログイン名や同じ UID のエントリを複数持つことは可能で 同じログイン名や同じユーザ ID のエントリを複数持つことは可能ですが、
すが、普通それは誤りです。これらのファイルを取り扱うルーチンはしばしばそ 普通それは誤りです。
の複数エントリの 1 つだけを返しますし、 これらのファイルを取り扱うルーチンは、しばしばその複数エントリの
そしてそれはランダムな選択によるものです。 1 つだけを返しますし、それはランダムな選択によるものです。
.Pp .Pp
ログイン名は決してハイフン ログイン名は決してハイフン (``-'') で始めてはいけません。
.Pq Ql \&- また、メーラを混乱させやすいので、大文字やドット (``.'') も
で始めてはいけません。また、メーラを混乱させる傾向にあるので、大文字やドット 名前の一部にしないことを強く推奨します。
.Pq Ql \&. 歴史的にユーザデータベース中でフィールドを区切るのに使われてきたため、
も絶対に名前の一部にしないことを強く推奨します どのフィールドもコロン (``:'') を含んではなりません
.Pp .Pp
password はパスワードの password フィールドはパスワードの
.Em 暗号化された .Em 暗号化された
形です。 形です。
.Ar password .Ar password
欄が空ならば、そのマシンへアクセスするのに何のパスワードも必要としないで フィールドが空の場合、マシンへのアクセスにはパスワードを要求されません。
しょう。これはほとんど恒常的に誤りです。これらのファイルは暗号化された このようにすることは、ほとんど常に誤りです。
ユーザパスワードを含んでいるので、 これらのファイルは暗号化されたユーザパスワードを含んでいるので、
適当な権利無しにはいかなる人によっても可読であっ 適切な権限の無い人から読み取り可能にしておくべきではないでしょう。
てはいけません。管理上のアカウントは 1 個のアスタリスク
.Ql \&*
を含むパスワード欄を有しており、これは通常のログインを許しません。
.Pp .Pp
group 欄はユーザがログインした上で位置付けられるグループです。このシステムは group フィールドは、ユーザがログインした際に位置付けられるグループです。
マルチグループ( このシステムではマルチグループ(
.Xr groups 1 .Xr groups 1
参照) 参照) をサポートしているので、
をサポートしますが、この欄はユーザの 1 次グループを指名します。 このフィールドにはほとんど特別な意味はありません。
2 次グループのメンバは
.Pa /etc/group
の中で選ばれます。
.Pp .Pp
.Ar class .Ar class
欄はユーザのログインクラスに対するキーです。ログインクラスは フィールドは、ユーザのログインクラスに対するキーです。
ログインクラスは
.Xr login.conf 5 .Xr login.conf 5
の中で定義されます。 の中で定義されます。
.Xr login.conf 5 .Xr login.conf 5
@ -129,550 +149,147 @@ group
形式のデータベースです。 形式のデータベースです。
.Pp .Pp
.Ar change .Ar change
フィールド
.Dv GMT .Dv UTC
における基準時点からの秒数を表したものであり、 における基準時点からの秒数を表したものであり、
この時までにアカウントに対するパスワードを変更する必要があります。 この時までにアカウントに対するパスワードを変更する必要があります。
パスワードエージング機能をなくすには、 パスワードの時限機能をなくすには、このフィールドを空にしておきます。
この欄を空欄にしておくか 0 をセットしておけば良いです。
.Pp .Pp
.Ar expire .Ar expire
フィールド
.Dv GMT .Dv UTC
における基準時点からの秒数を表したものであり、 における基準時点からの秒数を表したものであり、
その時にアカウントが消滅します。 その時にアカウントが消滅します。
アカウント再設定機能をなくすには、 アカウントの時限機能をなくすには、このフィールドを空にしておきます。
この欄を空にセットしておくか 0 をセットしておけば良いです。
.Pp .Pp
.Ar gecos .Ar gecos
欄はコンマ フィールドは、コンマ (``,'') で区切られた以下のようなサブフィールドを
.Pq Ql \&, 通常含んでいます:
で区切られた以下のような副欄を通常含んでいます:
.Pp .Pp
.Bl -bullet -compact -offset indent .Bl -tag -width office -offset indent -compact
.It .It name
ユーザのフルネーム ユーザのフルネーム
.It .It office
ユーザの職場の位置 ユーザのオフィス番号
.It .It wphone
ユーザの職場の電話番号 ユーザの職場の電話番号
.It .It hphone
ユーザの自宅の電話番号 ユーザの自宅の電話番号
.El .El
.Pp .Pp
この情報は フルネームは (``&'') を含むことができます。
フィンガープログラム これは、gecos フィールドが表示される時や、
.Xr finger 1 .Xr finger 1 ,
によって利用され、最初の欄はシステムのメーラ .Xr sendmail 8
によって使われます。fullname 欄内にアンパサンド文字 などの様々なプログラムで使用される時に、
.Pq Ql \&& ログイン名をキャピタライズしたものに置換されます。
が現われると、この欄を使うプログラムはそれをそのアカウントのログイン名の
大文字版に置き換えます。
.Pp .Pp
ユーザのホームディレクトリは、ユーザがログインして位置付けられる完全な オフィスと電話番号フィールドは
.Tn UNIX .Xr finger 1
によって使われていますし、
その他のアプリケーションでもおそらく使われています。
.Pp
ユーザのホームディレクトリは、ログインした時にユーザが置かれる完全な
.Ux
パス名です。 パス名です。
.Pp .Pp
shell 欄はユーザの好むインタプリタです。 shell フィールドは、ユーザの好みのコマンドインタプリタです。
.Ar shell .Ar shell
欄になにも無ければ Bourne シェル フィールドになにも無ければ Bourne シェル
.Pq Pa /bin/sh .Pq Pa /bin/sh
が仮定されます。セキュリティ上の理由により、シェルがシステムへのアクセス が指定されたものと解釈します。
を許さないスクリプト (例えば .Sh HESIOD サポート
.Xr nologin 8 .Xr nsswitch.conf 5
スクリプト) に設定されている場合、いかなる環境変数も渡されないように配慮さ
れるべきです。 .Sq passwd
.Xr sh 1 データベースとして
については、これは .Sq dns
.Fl p が指定されていた場合、
フラグを指定することで可能です。これが他のシェルでどのように行なわれるか .Nm
は、特定のシェルの文書を調べてください。 検索は
.Sh YP/NIS との相互作用 .Sq passwd
.Ss NIS パスワードデータへのアクセスを可能にする Hesiod ドメインから開始されます。
システム管理者は .Sh NIS サポート
.Pa /etc/master.passwd .Xr nsswitch.conf 5
ファイルに特別なレコードを付け加えることによって、パスワード情報について
NIS/YP を用いるように .Sq passwd
.Tn FreeBSD データベースとして
を設定できます。ハッシュされたパスワードデータベースおよび .Sq nis
.Pa /etc/passwd が指定されていた場合、
ファイル ( .Nm
.Pa /etc/passwd 検索は
は絶対に手動で編集してはいけません) に変更が適切にマージされるように、 .Sq passwd.byname ,
エントリは .Sq passwd.byuid ,
.Xr vipw 8 .Sq master.passwd.byname
で付加するべきです。別の方法としては、なんらかの方法で そして
.Pa /etc/master.passwd .Sq master.passwd.byuid
を修正した後、 .Tn NIS
.Xr pwd_mkdb 8 マップから開始されます。
を用いてパスワードデータベースを手動で更新することができます。 .Sh COMPAT サポート
.Xr nsswitch.conf 5
.Sq passwd
データベースとして
.Sq compat
が指定されており、
.Sq passwd_compat
データベースとして
.Sq dns
.Sq nis
のどちらかが指定されていた場合、
.Nm
ファイルは、ユーザ名とネットグループに基づいた、
.Sq +/-
による標準的な排除と取り込み機能もサポートします。
.Pp .Pp
NIS を活性化するための最も簡単な方法は、名前欄にプラス符号 ``-'' (マイナス符号)によって開始された行は、
.Pq Ql \&+ それ以降の ``+'' (プラス符号) によってマークされた取り込みからは排除されます。
だけを持つ、
以下のような空のレコードを付け加えることです。
.Bd -literal -offset indent
+:::::::::
.Ed
.Ql \&+
は、
.Tn FreeBSD
の標準 C ライブラリの
.Xr getpwent 3
ルーチンに対し、
検索において NIS パスワードマップを使用開始するよう指示します。
.Pp .Pp
上記のエントリは 行の 2 番目の文字が ``@'' (単価記号) の場合、
.Em ワイルドカード その操作は
エントリとして知られていることに注意してください。なぜなら、それはすべての .Ar name
ユーザと一致し (他に情報を持たない フィールドの残りの文字列で指定されるネットグループ中の
.Ql \&+ すべてのエントリに対して行われます。
は、全員に一致します)、 そうでない場合、
全 NIS パスワードデータを無変更にて引き出すことを許します。 .Ar name
一方、 フィールドはユーザ名を指定するものと解釈されます。
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、シェルが不正な値で上書きされているのでログインできなくなります。
.Pp .Pp
ユーザ ``+'' トークンは、
.Dq mitnick .Ar name
は、そのエントリが フィールドに単独で現れても構いません。
.Ql \&+ この場合、Hesiod ドメイン
ではなく .Nm
.Ql \&- (
で指定されているので、 .Sq passwd_compat: dns
完全に無視されることになります。 を指定した時)、もしくは
マイナスエントリは、 .Sq passwd.byname
ある 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
.Dq dennis .Sq passwd.byuid
.Tn NIS
.Dq staff マップ (
ネットグループと .Sq passwd_compat: nis
.Dq permitted-users を指定した時) のどちらかから、すべてのユーザが取り込まれます。
ネットグループとを除くすべてのユーザを、
システムは権限があるユーザとして認識しないでしょう。
.Dq rejected-users
ネットグループは認識されますが、
全メンバのシェルは再マップされますので、
アクセスは拒否されるでしょう。他のすべての NIS パスワードレコードは無視され
るでしょう。 管理者は以下のようなワイルドカードエントリをリストの最後に
付けても良いでしょう。
.Bd -literal -offset indent
+:::::::::/sbin/nologin
.Ed
このエントリは他のすべてのエントリと一致しないすべてのユーザを一挙にとらえる
働きをします。
必ずしもログインアクセスを許可せずに、
特定の
NIS ドメイン内の全ユーザをシステムが認識可能であることが望ましいときには、
このテクニックが有効なことがあります。
ログインシェルとシェルスクリプトを使用するときのセキュリティに関する事柄
について、シェル欄の記述を参照してください。
.Pp .Pp
この エントリの
.Pa 上書き .Ar uid
機能の主な用途は、
管理者が NIS クライアント上でアクセス制限を強化可能とすることです。 .Ar gid
単に特定のネットグループに対してユーザを追加したり削除したりするだけで、 フィールドが空でない場合、Hesiod ドメインもしくは
そのユーザにあるマシン群へのアクセスを許可し、 .Tn NIS
かつ他のマシン群へのアクセスを拒否することができます。 マップから取り込まれた情報を、指定された数字で上書きします。
ネットグループデータベースもまた NIS 経由でアクセスできるので、 同様にして、
1 個所すなわち NIS マスタサーバからアクセス制限を管理できます。 .Ar gecos ,
一旦ホストのアクセスリストが .Ar dir ,
.Pa /etc/master.passwd .Ar shell
に設定されると、新にネットグループが作られない限りそれは再度変更する必要 フィールドにテキストがあった場合、Hesiod や
はありません。 .Tn NIS
.Sh を介して取り込まれた情報を上書きします。
.Ss NIS 経由のシャドウパスワード いくつかのシステムでは、
.Tn FreeBSD .Ar passwd
はシャドウパスワード法を採用しており、 フィールドも上書きできます。
ユーザの暗号化されたパスワードはスーパユーザだけが読み書き可能な
.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
.Sh 関連ファイル .Sh 関連ファイル
.Bl -tag -width /etc/master.passwd -compact .Bl -tag -width ".Pa /etc/master.passwd" -compact
.It Pa /etc/passwd .It Pa /etc/passwd
パスワードを除いた パスワードを除いた
.Tn ASCII .Tn ASCII
@ -695,39 +312,20 @@ NIS
.Xr login 1 , .Xr login 1 ,
.Xr passwd 1 , .Xr passwd 1 ,
.Xr getpwent 3 , .Xr getpwent 3 ,
.Xr login_getclass 3 , .Xr netgroup 5 ,
.Xr login.conf 5 ,
.Xr adduser 8 , .Xr adduser 8 ,
.Xr pw 8 ,
.Xr pwd_mkdb 8 , .Xr pwd_mkdb 8 ,
.Xr vipw 8 , .Xr vipw 8 ,
.Xr yp 8 .Xr yp 8
.Pp
.%T "Managing NFS and NIS"
(O'Reilly & Associates)
.Sh バグ .Sh バグ
ユーザ情報は他のどこか に入れるべき (そして結局は入れることになる) でしょう。 ユーザ情報は他のどこかに入れるべき (そしていつかは入れる) でしょう。
.Pp .Pp
YP/NIS パスワードデータベースでは、 ファイル中で
普通のユーザには暗号化されたパスワードが見えてしまいます。したがって .Sq compat
.Pa master.passwd の排除を取り込みの後に行うことは、予期しない結果をもたらすでしょう。
マップのシャドウパスワードおよび
.Tn FreeBSD
.Xr ypserv 8
サーバを利用しないと、
簡単にパスワードクラッキングを許してしまうことになります。
.Pp
.Pa master.passwd
タイプのマップの使用をサポートする
.Tn FreeBSD
.Xr ypserv 8
を使用しないと、
YP/NIS パスワードデータベースは
古いスタイル (第 6 版) のフォーマットになります。これは、
.Tn FreeBSD
システムを標準 NIS サーバのクライアントとして利用するとき、
ユーザのログインクラスやパスワード期限等の
現在のフォーマットにある欄の値については
サイトワイドな値が利用できなくなることを意味します。
.Sh 互換性 .Sh 互換性
パスワードファイル形式は パスワードファイル形式は
.Bx 4.3 .Bx 4.3
@ -737,12 +335,10 @@ YP/NIS
.Dq class , .Dq class ,
.Dq change , .Dq change ,
.Dq expire .Dq expire
欄が追加されましたが、デフォルトでは無効になっています。 フィールドが追加されましたが、デフォルトでは無効になっています。
これらの欄を設定するには 現在 class は実装されていませんが、change と expire は実装されています。
.Xr vipw 8 これらを設定するには、基準時点から今日までの秒数に、
もしくは 好きなだけオフセットを秒数にして加えたものを使用してください。
.Xr pw 8
を使用してください。
.Bd -literal -offset indent .Bd -literal -offset indent
BEGIN { FS = ":"} BEGIN { FS = ":"}
{ print $1 ":" $2 ":" $3 ":" $4 "::0:0:" $5 ":" $6 ":" $7 } { print $1 ":" $2 ":" $3 ":" $4 "::0:0:" $5 ":" $6 ":" $7 }
@ -751,15 +347,18 @@ BEGIN { FS = ":"}
.Nm .Nm
ファイルは ファイルは
.At v6 .At v6
で現われました。YP/NIS の機能は で登場しました。
.Tn SunOS .Pp
を雛型として .Tn NIS
.Fx 1.1 .Nm
で初めて現われました。上書き機能は ファイル形式は、SunOS で初めて登場しました。
.Fx 2.0 .Pp
において新しく組み込まれました。上書き機能はネットグループを適切に Hesiod サポートは、
サポートするために .Fx 4.1
.Fx 2.0.5 で初めて登場しました。
で更新されました。注釈のサポートは これは
.Fx 3.0 .Nx
で初めてサポートされました。 プロジェクトから取り込まれました。
こちらでは、
.Nx 1.4
で初めて登場しました。