一貫性を保つため、これらのファイルはどれも手で変更を加えるべきではありません。
master.passwd ファイルは root からのみ読み取り可能で、改行で区切られたレコードから成ります。 ユーザごとに 1 レコードが対応し、コロン (``:'') で区切られた 10 個のフィールドが含まれます。 これらのフィールドは以下の通りです:
ファイルは、 pwd_mkdb8 によって master.passwd ファイルから生成されます。 その際に、class, change そして expire フィールドは削除され、 password フィールドは ``*'' に置換されます。
name フィールドはコンピュータアカウントにアクセスするのに用いられるログインであり、 uid フィールドはそれに結び付けられた数字です。 これらはファイルアクセスを制御するので、両方共そのシステム (また、しばしば 1 まとまりの複数のシステム) の中で一意であるべきです。
同じログイン名や同じユーザ ID のエントリを複数持つことは可能ですが、 普通それは誤りです。 これらのファイルを取り扱うルーチンは、しばしばその複数エントリの 1 つだけを返しますし、それはランダムな選択によるものです。
ログイン名は決してハイフン (``-'') で始めてはいけません。 また、メーラを混乱させやすいので、大文字やドット (``.'') も 名前の一部にしないことを強く推奨します。 歴史的にユーザデータベース中でフィールドを区切るのに使われてきたため、 どのフィールドもコロン (``:'') を含んではなりません。
password フィールドはパスワードの 暗号化された 形です。 crypt(3) を参照してください。 password フィールドが空の場合、マシンへのアクセスにはパスワードを要求されません。 このようにすることは、ほとんど常に誤りです。 これらのファイルは暗号化されたユーザパスワードを含んでいるので、 適切な権限の無い人から読み取り可能にしておくべきではないでしょう。
group フィールドは、ユーザがログインした際に位置付けられるグループです。 このシステムではマルチグループ ( groups(1) 参照) をサポートしているので、 このフィールドにはほとんど特別な意味はありません。
class フィールドは、ユーザのログインクラスに対するキーです。 ログインクラスは login.conf5 の中で定義されます。 login.conf5 は、ユーザの属性、アカウンティング、リソース、環境設定に関する termcap(5) 形式のデータベースです。
change フィールドは UTC における基準時点からの秒数を表したものであり、 この時までにアカウントに対するパスワードを変更する必要があります。 パスワードの時限機能をなくすには、このフィールドを空にしておきます。
expire フィールドは UTC における基準時点からの秒数を表したものであり、 その時にアカウントが失効します。 アカウントの時限機能をなくすには、このフィールドを空にしておきます。
gecos フィールドは、コンマ (``,'') で区切られた以下のようなサブフィールドを 通常含んでいます:
フルネームはアンパサンド (``&'') を含むことができます。 これは、gecos フィールドが表示される時や、 finger(1), sendmail(8) などの様々なプログラムで使用される時に、 キャピタライズは先頭の一文字を大文字にする (訳注: Charlie Root みたいに) ので、ログイン名の先頭一文字を大文字にしたものに置換されます。
オフィスと電話番号フィールドは finger(1) によって使われていますし、 その他のアプリケーションでもおそらく使われています。
ユーザのホームディレクトリは、ログインした時にユーザが置かれる完全な UNIX パス名です。
shell フィールドは、ユーザの好みのコマンドインタプリタです。 shell フィールドになにも無ければ Bourne シェル (/bin/sh ) が指定されたものと解釈します。
``-'' (マイナス符号)によって開始された行は、 それ以降の ``+'' (プラス符号) によってマークされた取り込みからは排除されます。
行の 2 番目の文字が ``@'' (単価記号) の場合、 その操作は name フィールドの残りの文字列で指定されるネットグループ中の すべてのエントリに対して行われます。 そうでない場合、 name フィールドの残りの部分はユーザ名を指定するものと解釈されます。
``+'' トークンは、 name フィールドに単独で現れても構いません。 この場合、Hesiod ドメイン ( `passwd_compat: dns' を指定した時)、もしくは `passwd.byname' と `passwd.byuid' NIS マップ ( `passwd_compat: nis' を指定した時) のどちらかから、すべてのユーザが取り込まれます。
エントリの uid や gid フィールドが空でない場合、Hesiod ドメインもしくは NIS マップから取り込まれた情報を、指定された数字で上書きします。 同様にして、 gecos dir shell フィールドにテキストが含まれている場合、Hesiod や NIS を介して取り込まれた情報をそのテキストで上書きします。 いくつかのシステムでは、 passwd フィールドも上書きできます。
"Managing NFS and NIS" (O'Reilly & Associates)
ファイル中で `compat' の排除を取り込みの後に行うことは、予期しない結果をもたらすでしょう。
BEGIN { FS = ":"} { print $1 ":" $2 ":" $3 ":" $4 "::0:0:" $5 ":" $6 ":" $7 }
NIS ファイル形式は、SunOS ではじめて登場しました。
Hesiod サポートは、 Fx 4.1 ではじめて登場しました。 これは Nx プロジェクトから取り込まれました。 こちらでは、 Nx 1.4 ではじめて登場しました。