Catch up with rev 1.39
Submitted by: SUZUKI Koichi <metal@gc5.so-net.ne.jp>
This commit is contained in:
parent
84c8706b96
commit
b001151637
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=15636
1 changed files with 206 additions and 607 deletions
|
@ -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
|
||||
で初めて登場しました。
|
||||
|
|
Loading…
Reference in a new issue