EN JA
PWD_MKDB(8)
PWD_MKDB(8) FreeBSD System Manager's Manual PWD_MKDB(8)

名称

pwd_mkdbパスワードデータベースを構築する

書式

pwd_mkdb [ -BCiLNp][ -d directory][ -s cachesize][ -u username] file

解説

pwd_mkdb ユーティリティは、指定されたファイルから db(3) スタイルの、セキュリティのしっかりしたデータベースとそうでないデータベースの 2 つを構築します。そして、これらのデータベースは、それぞれ /etc/spwd.db/etc/pwd.db にインストールされます。このファイルは、 /etc/master.passwd にインストールされます。このファイルは正しい形式でなければなりません ( passwd(5) を参照)。このシステムで使われる形式は、旧来のバージョン 7 スタイルの形式とは異なるので注意を要します。

オプションは、次の通りです:

-B
データをビッグエンディアン形式で格納します。
-C
パスワードファイルが正しい形式かどうかをチェックします。どのファイルも変更、追加、削除を行ないません。
-L
データをリトルエンディアン形式で格納します。
-N
ファイルに対するロックを取得できない場合にはエラー状態で終了するように、 pwd_mkdb に指示します。デフォルトでは、ソースファイルに対するロックを、ブロックして待ちます。データベースの再構築中、このロックは保持されます。
-p
バージョン 7 スタイルのパスワードファイルを作成し、 /etc/passwd にインストールします。
-i
master.passwd ファイルのロックの失敗を無視します。競合が起き得ないような、リリースの過程で NFS 越しにパスワードファイルを構築する場合に、このオプションは使用されます。ロックを無視するために -d オプションでデフォルトでないディレクトリも指定しなければなりません。このオプションのその他の利用はできる限り控えて下さい。
-d directory
/etc の代わりに、指定された先のディレクトリにデータベースを保存します。
-u username
指定したユーザのレコードだけ更新します。単一ユーザに対してのみ作用するユーティリティは、このオプションを使用し、データベース全体を再構築するオーバヘッドを避けることが出来ます。
-s cachesize
ハッシングライブラリが使用するメモリキャッシュの大きさを、メガバイト単位で指定します。ユーザ数が多いシステムでキャッシュを小さくすると、データベースファイルの再構築に耐えがたいほどの長時間を要します、おおざっぱな目安では、 pwd_mkdb の使用メモリ量はここで指定した大きさの 2 倍をちょっと越えたものになります。デフォルト値は 2 メガバイトです。

2 つのデータベースの違いは、安全なバージョンでは、ユーザのパスワードが暗号化されて入っており、安全でないバージョンでは、パスワードが ``*'' となっていることです。

このデータベースは、C ライブラリパスワードルーチンに使われます ( getpwent(3) を参照)。

pwd_mkdb ユーティリティは成功したときは 0 を返し、失敗したときは 0 以外を返します。

環境変数

PW_SCAN_BIG_IDS 環境変数が設定されると、大きなユーザ ID およびグループ ID に対して通常生成される警告メッセージを、 pwd_mkdb は抑制します。 ID 値を仮定するプログラムでこのような ID を使用すると、深刻な問題の原因となります。

関連ファイル

/etc/pwd.db
セキュリティのないパスワードデータベースファイル
/etc/pwd.db.tmp
一時ファイル。
/etc/spwd.db
セキュリティのあるパスワードデータベースファイル。
/etc/spwd.db.tmp
一時ファイル。
/etc/master.passwd
現在のパスワードファイル。
/etc/passwd
バージョン 7 形式のパスワードファイル。

互換性

以前のバージョンのシステムは、 pwd_mkdb 同様のプログラムである mkpasswd(8) を持っており、それはパスワードファイルに対して dbm(3) スタイルのデータベースを構築しましたが、これをインストールするために呼ぶプログラムに依存していました。このプログラムは、以前のプログラムのユーザが機能の変化で驚かないように名前が変えられました。

バグ

パスワードファイルの不可分な更新が必要なので、 pwd_mkdb は、インストールに rename(2) を使います。しかし、コマンドラインで指定されたファイルが /etc ディレクトリと同じファイルシステム上に存在しなければなりません。

複数の人が、 pwd_mkdb を同時に異なるパスワードファイルに対して走らせると、明らかにレース (race;競合) になってしまいます。 pwd_mkdb のフロントエンドである chpass(1), passwd(1), vipw(8) では、この問題を避けるために必要なロック操作を行います。

February 28, 2005 FreeBSD