EN JA
PASSWD(5)
PASSWD(5) FreeBSD File Formats Manual PASSWD(5)

名称

passwd, master.passwdパスワードファイルのフォーマット

解説

passwd ファイルは、ローカルに保持しているパスワード情報の情報源です。これらは、Hesiod ドメインにおける‘ passwd’と‘ uid’や、 NIS マップの‘ passwd.byname’, ‘ passwd.byuid’, ‘ master.passwd.byname’と‘ master.passwd.byuid’と共に使用され、 nsswitch.conf(5) によって制御されます。

一貫性を保つため、これらのファイルは、どれも手で変更を加えるべきではありません。

master.passwd ファイルは、root からのみ読み込み可能で、改行で区切られたレコードから成ります。ユーザごとに 1 レコードが対応し、コロン (‘ :’) で区切られた 10 個のフィールドが含まれます。これらのフィールドは、次の通りです:

name
ユーザのログイン名。
password
ユーザの 暗号化された パスワード。
uid
ユーザの ID。
gid
ユーザのログイングループ ID。
class
ユーザのログインクラス。
change
パスワードの変更時間。
expire
アカウントの有効期限。
gecos
ユーザについての一般的な情報。
home_dir
ユーザのホームディレクトリ。
shell
ユーザのログインシェル。

passwd ファイルは、 pwd_mkdb(8) によって master.passwd ファイルから生成されます。その際に、 class, changeexpire フィールドは、削除され、 password フィールドは、‘ *’に置換されます。

name フィールドは、コンピュータアカウントにアクセスするのに用いられるログインであり、 uid フィールドは、それに結び付けられた数字です。これらは、ファイルアクセスを制御するので、両方共そのシステム (また、しばしば 1 まとまりの複数のシステム) の中で一意であるべきです。

同じログイン名や同じユーザ ID のエントリを複数持つことは可能ですが、普通それは、誤りです。これらのファイルを取り扱うルーチンは、しばしばその複数エントリの 1 つだけを返しますし、それは、ランダムな選択によるものです。

ログイン名は、決してハイフン (‘ -’) で始めてはいけません。また、メーラを混乱させやすいので、大文字やドット (‘ .’) も名前の一部にしないことを強く推奨します。歴史的にユーザデータベース中でフィールドを区切るのに使われてきたため、どのフィールドもコロン (‘ :’) を含んではなりません。

master.passwd ファイルでは、 password フィールドは、パスワードの 暗号化された 形式です、 crypt(3) を参照してください。 password フィールドが空の場合、マシンへのアクセスには、パスワードを要求されません。これは、ほとんど常に誤りであるので、PAM のような認証のコンポーネントは、パスワードなしアカウントへのリモートアクセスを強制的に禁止することができます。このファイルは、暗号化されたユーザパスワードを含んでいるので、適切な特権なしでだれでも読み込み可能とするべきではありません。

*’のパスワードは、パスワード認証がそのアカウントのために無効にされていることを示します (他の形式の認証によるログイン、例えば、 ssh(1) キーを使用してのログインは、まだ動作しています)。フィールドは、暗号化されたパスワードを含むだけです、そして、‘ *’は、パスワードを暗号化してもけっしてあり得ない結果です。

*LOCKED*’によって前置された暗号化パスワードは、アカウントが一時的に締め出されて、どんな認証も使用してもだれもにログインすることができないことを意味します。アカウントロックのための便利なコマンドラインインタフェースについては、 pw(8) を参照してください。

group フィールドは、ユーザがログイン時に置かれるグループです。このシステムでは、マルチグループ ( groups(1) 参照) をサポートしているので、このフィールドには、ほとんど特別な意味はありません。

class フィールドは、ユーザのログインクラスに対するキーです。ログインクラスは、ユーザ属性、アカウンティング、リソース、環境設定の termcap(5) スタイルのデータベースである login.conf(5) で定義されます。

change フィールドは、 UTC における基準時点からの秒数を表したものであり、この時までにアカウントに対するパスワードを変更する必要があります。パスワードの時限機能をなくすには、このフィールドを空にしておきます。 0 の値は、フィールドを空のままにしておくことと等価です。

expire フィールドは、 UTC における基準時点からの秒数を表したものであり、その時にアカウントが失効します。アカウントの時限機能をなくすには、このフィールドを空にしておきます。 0 の値は、フィールドを空のままにしておくことと等価です。

gecos フィールドは、コンマ (‘ ,’) で区切られた以下のようなサブフィールドを通常含んでいます:

name
ユーザのフルネーム
office
ユーザのオフィス番号
wphone
ユーザの職場の電話番号
hphone
ユーザの自宅の電話番号

full name (フルネーム) は、アンパサンド (‘ &’) を含むことができます。これは、 gecos フィールドが表示される時や、 finger(1), sendmail(8) などの様々なプログラムで使用される時に、キャピタライズは、先頭の一文字を大文字にするので、 (訳注: Charlie Root のように) login name (ログイン名) の先頭一文字を大文字にしたものに置換されます。

office (オフィス) と電話番号フィールドは、 finger(1) によって使われていますし、その他のアプリケーションでもおそらく使われています。

ユーザのホームディレクトリ、 home_dir は、ログインした時にユーザが置かれる完全な UNIX パス名です。

shell フィールドは、ユーザの好みのコマンドインタプリタです。 shell フィールドになにも無ければ Bourne シェル ( /bin/sh) が指定されたものと解釈します。今回限りでアカウントへのログ記録を無効にする従来の方法は、システムアカウントで行われるそのままに、 /sbin/nologin ( nologin(8) 参照) にその shell を設定することです。

HESIOD サポート

nsswitch.conf(5) に‘ passwd’データベースとして‘ dns’が指定されていた場合、 passwd 検索は、‘ passwd’ Hesiod ドメインから開始されます。

NIS サポート

nsswitch.conf(5) に‘ passwd’データベースとして‘ nis’が指定されていた場合、 passwd 検索は、‘ passwd.byname’, ‘ passwd.byuid’, ‘ master.passwd.byname’と‘ master.passwd.byuid’ NIS マップから開始されます。

COMPAT サポート

nsswitch.conf(5) に‘ passwd’データベースとして‘ compat’が指定されており、‘ passwd_compat’データベースとして‘ dns’か‘ nis’のどちらかが指定されていた場合、 passwd ファイルは、ユーザ名とネットグループに基づいた、‘ +/ -’による標準的な排除と取り込み機能もサポートします。

-’ (マイナス符号)によって開始された行は、それ以降の‘ +’ (プラス符号) によってマークされた取り込みからは排除されます。

行の 2 番目の文字が‘ @’ (単価記号) の場合、その操作は、 name フィールドの残りの文字列で指定されるネットグループ中のすべてのエントリに対して行われます。そうでない場合、 name フィールドの残りの部分は、ユーザ名を指定するものと解釈されます。

+’トークンは、 name フィールドに単独で現れても構いません。この場合、 Hesiod ドメイン passwd (‘ passwd_compat: dns’を指定した時)、または‘ passwd.byname’と‘ passwd.byuid’ NIS マップ (‘ passwd_compat: nis’を指定した時) のどちらかから、すべてのユーザが取り込まれます。

エントリの uidgid フィールドが空でない場合、Hesiod ドメインもしくは NIS マップから取り込まれた情報を、指定された数字で上書きします。同様に、 gecos, dir または shell エントリにテキストが含まれているなら、Hesiod または NIS を通してインクルードされる情報を上書きします。いくつかのシステムでは、 passwd フィールドも上書きできます。

関連ファイル

/etc/passwd
パスワードを除いた ASCII パスワードファイル
/etc/pwd.db
パスワードを除いた db(3) 形式のパスワードデータベース
/etc/master.passwd
パスワードの入った ASCII パスワードファイル
/etc/spwd.db
パスワードの入った db(3) 形式のパスワードデータベース

互換性

パスワードファイル形式は、 4.3BSD 以降で変更されました。以下の awk スクリプトは、古いスタイルのパスワードファイルを新しいスタイルのパスワードファイルに変換するのに利用できます。追加のフィールド class, changeexpire が追加されましたが、デフォルトでオフにされています (これらのフィールドを 0 に設定することは、それらを空白のままにしておくことと等価です)。現在 class は、実装されていませんが、change と expire は、実装されています。これらを設定するには、基準時点から今日までの秒数に、好きなだけオフセットを秒数にして加えたものを使用してください。

BEGIN { FS = ":"} 
{ print $1 ":" $2 ":" $3 ":" $4 "::0:0:" $5 ":" $6 ":" $7 }

歴史

passwd ファイルは、 Version 6 AT&T UNIX で登場しました。

NIS passwd ファイル形式は、SunOS ではじめて登場しました。

Hesiod サポートは、 FreeBSD 4.1 ではじめて登場しました。これは、 NetBSD プロジェクトから取り込まれました。こちらでは、 NetBSD 1.4 ではじめて登場しました。

バグ

ユーザ情報は、他のどこかに入れるべき (そしていつかは入れる) でしょう。

ファイル中で‘ compat’の排除を取り込みの後に行うことは、予期しない結果をもたらすでしょう。

June 23, 2012 FreeBSD