スポンサーリンク

PASSWD(5) FreeBSD ファイルフォーマットマニュアル 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, change そして expire フィールドは削除され、 password フィールドは ‘‘*’’ に置換されます。

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

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

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

password フィールドはパスワードの 暗号化された形です。 crypt(3) を参照し てください。 password フィールドが空の場合、マシンへのアクセスにはパス ワードを要求されません。このようにすることは、ほとんど常に誤りです。これ らのファイルは暗号化されたユーザパスワードを含んでいるので、適切な権限の 無い人から読み取り可能にしておくべきではないでしょう。

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

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

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

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

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

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

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

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

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

shell フィールドは、ユーザの好みのコマンドインタプリタです。 shell フィー ルドになにも無ければ Bourne シェル (/bin/sh) が指定されたものと解釈しま す。

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) 形式のパスワードデータベース

関連項目

chpass(1), login(1), passwd(1), crypt(3), getpwent(3), login.conf(5), netgroup(5), adduser(8), pw(8), pwd_mkdb(8), vipw(8), yp(8)

Managing NFS and NIS (O’Reilly & Associates)

バグ

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

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

互換性

パスワードファイル形式は 4.3BSD 以降で変更されました。以下の awk スクリプ トは、古いスタイルのパスワードファイルを新しいスタイルのパスワードファイ ルに変換するのに利用できます。 ‘‘class’’, ‘‘change’’, ‘‘expire’’ フィール ドが追加されましたが、デフォルトでは無効になっています。現在 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 ではじめて登場し ました。

FreeBSD 10.0 February 7, 2005 FreeBSD 10.0

スポンサーリンク