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

名称

pwシステムユーザ、グループの作成、削除、変更、表示

書式

pw [ -V etcdir] useradd [ name|uid][ -C config][ -q][ -n name][ -u uid][ -c comment][ -d dir][ -e date][ -p date][ -g group][ -G grouplist][ -m][ -M mode][ -k dir][ -w method][ -s shell][ -o][ -L class][ -h fd | -H fd][ -N][ -P][ -Y]

pw [ -V etcdir] useradd [ name|uid] -D [ -C config][ -q][ -b dir][ -e days][ -p days][ -g group][ -G grouplist][ -k dir][ -M mode][ -u min, max][ -i min, max][ -w method][ -s shell][ -y path]

pw [ -V etcdir] userdel [ name|uid][ -n name][ -u uid][ -r][ -Y]

pw [ -V etcdir] usermod [ name|uid][ -C config][ -q][ -n name][ -u uid][ -c comment][ -d dir][ -e date][ -p date][ -g group][ -G grouplist][ -l name][ -m][ -M mode][ -k dir][ -w method][ -s shell][ -L class][ -h fd | -H fd][ -N][ -P][ -Y]

pw [ -V etcdir] usershow [ name|uid][ -n name][ -u uid][ -F][ -P][ -7][ -a]

pw [ -V etcdir] usernext [ -C config][ -q]

pw [ -V etcdir] groupadd [ group|gid][ -C config][ -q][ -n group][ -g gid][ -M members][ -o][ -h fd | -H fd][ -N][ -P][ -Y]

pw [ -V etcdir] groupdel [ group|gid][ -n name][ -g gid][ -Y]

pw [ -V etcdir] groupmod [ group|gid][ -C config][ -q][ -n name][ -g gid][ -l name][ -M members][ -m newmembers][ -d oldmembers][ -h fd | -H fd][ -N][ -P][ -Y]

pw [ -V etcdir] groupshow [ group|gid][ -n name][ -g gid][ -F][ -P][ -a]

pw [ -V etcdir] groupnext [ -C config][ -q]

pw [ -V etcdir] lock [ name|uid][ -C config][ -q]

pw [ -V etcdir] unlock [ name|uid][ -C config][ -q]

解説

pw ユーティリティは、システムの usergroup ファイルのユーザ、グループを簡単に、標準的な方法で追加、変更、削除することができるようにするコマンドライン版のエディタです。 pw は、ローカルな user ファイルと group ファイルを操作することができるだけだということに注意して下さい。 NIS のユーザ、グループは、 NIS サーバ上で管理しなければなりません。 pw ユーティリティは、 passwd, master.passwd, group ファイルや、安全なまたは安全でないパスワードデータベースファイルの更新作業を行いますので、root で実行されなければなりません。

pw のコマンドラインにかかれている最初の一つか二つのキーワードは、引数の残りを解釈する際の文脈を指定します。 usergroup のキーワードは、どちらも、 add, del, mod, show, next と組み合わせて用いることができ、どのような順序 (例えば showuser, usershow, show user, user show は、すべて同じこととみなされます) で指定してもかまいません。この柔軟性は、ユーザ、グループデータベース操作のために pw を呼び出す対話的なスクリプトには、便利です。 -n name, -u uid, -g gid オプションを使う代わりに、これらのキーワードに続けてユーザ名、グループ名、数字の ID のうち一つを指定することができます。

以下のフラグは、操作のほとんどまたは全てのモードで共通です。

-V etcdir
本フラグは、パスワードファイル・グループファイル・設定ファイルを探すための、通常とは、別の場所をセットします。また、通常とは、別の場所でユーザ/グループデータベースを管理するために使用可能です。本スイッチを指定すると、システムの /etc/pw.conf をデフォルト設定データをしては使用せず、代りに、指定したディレクトリ中のファイル pw.conf を使用します (存在しない場合には、使用しません)。 -C フラグは、この動作に優先します。一般規則では、オプションは、操作タイプに後続する必要があるのですが、 -V フラグは、例外であり、コマンドライン上で操作キーワードの前で使用可能です。
-C config
pw は、新しいユーザアカウントとグループは、どのように作られるべきかという方針の情報を得るために、デフォルトでは、ファイル /etc/pw.conf を読み込みます。 -C オプションで異なる設定ファイルを指定できます。設定ファイルのほとんどの内容は、コマンドラインオプションにより上書きされますが、新しいアカウントを追加するための標準的な情報を設定ファイルに設定しておいた方が便利かもしれません。
-q
このオプションを使うと pw は、エラーメッセージを抑制します。これは、注意深くフォーマットされたディスプレイへのメッセージ表示よりも、 pw から返された戻り値を解釈する方が好まれるような対話的な環境では、便利かもしれません。
-N
このオプションは、 addmodify 操作で使います。 pw は、ユーザ/グループデータベースを更新せずに、操作の結果だけを出力します。 -P オプションを使うと、標準 passwd フォーマットと可読なフォーマットの切り替えができます。
-Y
更新モードのいずれかと、このオプションとをいっしょに使うことで、 pw は、 /var/yp にカレントディレクトリを移動させてから make(1) を実行します。これは、 NIS データベースファイルの自動更新を可能とするためのものです。 NIS が別のパスワードファイル、グループファイルを使っている場合、 -y path オプションを使い、 NIS パスワードデータベースの位置を指定するとよいでしょう。これにより、 pw は、システムパスワードデータベースと並行してこれらのデータベースも同時に更新します。

ユーザオプション

以下のオプションは、 useraddusermod コマンドに付けます:
-n name
ユーザ名/アカウント名を指定します。
-u uid
ユーザ ID/アカウント ID を数字で指定します。

アカウント名は、uid を含み、逆も同様であるため、通常これらのオプションのどちらか片方しか必要ではありません。しかし、両方を指定しなければならないこともしばしばあります。例えば、すでに存在するユーザの uid を usermod で変えたり、新しいアカウントを作るときにデフォルトの uid を上書きしたりするときです。 pwuseradd を使って新しいユーザに uid を自動的に割り当てたい場合は、 -u オプションを使っては、 いけません。コマンドライン上で useradd, userdel, usermod, usershow キーワードの直後なら、アカウントとユーザIDのどちらかを -n-u を使わずにそのまま続けて書くことができます。

-c comment
このオプションは、passwd の GECOS フィールドの内容をセットします。このフィールドは、コンマで区切られた 4 つのサブフィールドで、一般的には、ユーザの姓名、勤務先または地区、職場と自宅の電話番号を含みます。これらのサブフィールドは、慣習的に使われるだけであり、省略可能です。このフィールドが空白を含む場合、コメント自身をダブルクォート‘ "’でくくらなければなりません。コンマは、サブフィールドの区切りとして使われるので、フィールド内での使用は、避けて下さい。そして、コロン‘ :’キャラクタも passwd ファイルのフィールド区切りであるため使えません。
-d dir
このオプションは、アカウントのホームディレクトリを設定します。通常、これは、ホームディレクトリが /etc/pw.conf から決まるデフォルト (ふつうは、 /home の下でアカウント名をサブディレクトリとしたもの) と異なる場合にだけ使うことになるでしょう。
-e date
アカウントが破棄される日付をセットします。この日付のフォーマットは、10 進の UNIX 時間か‘ dd-mmm-yy[yy]’フォーマットの日付のどちらかになり、後者は、dd が日、mmmが月で、数字とアルファベット('Jan', 'Feb' 等)のどちらでもよく、年は、2 または 4 桁の数字からなります。このオプションは、‘ +n[mhdwoy]’の形の相対的な日付も受け付けます。‘ n’は、10 進数、8 進数 (0 から始まる)、16 進数 (0x で始まる) の数字で、その後に現在の日付時刻から破棄される日までの分(m)、時(h)、日(d)、曜日(w)、月(o)、年(y)の数がセットされます。
-p date
アカウントのパスワードが破棄される日付をセットします。このフィールドは、パスワードの強制的な変更に対して適用されることを除けば、アカウント破棄日付指定オプションと似ています。これは、 -e オプションと同様にしてセットされます。
-g group
与えられた group をアカウントのプライマリグループにセットします。 group は、グループ名またはグループ ID 番号で定義されます。
-G grouplist
そのアカウントの追加グループをセットします。 grouplist は、コンマ、空白またはタブで区切られた、グループ名またはグループ ID 番号のリストです。 /etc/group の、グループリストで指定されたグループにそのユーザ名が追加され、 grouplist で指定されないグループからそのユーザ名が削除されます。注意: ユーザを grouplist でプライマリグループには、加えるべきではありません。また、グループのメンバの変更は、現在のログインにはすぐには影響されず、変更後のログインにだけ影響します。
-L class
このオプションは、生成されたユーザのログインクラスをセットします。ユーザログインクラスに関する情報は、 login.conf(5)passwd(5) を参照して下さい。
-m
このオプションは、ユーザのホームディレクトリの作成を試みるように pw に指示します。もちろんこれは、 useradd で新しいアカウントを加えるときにも役に立ちますが、すでに存在するユーザのホームディレクトリを、ファイルシステムの別の場所に移動するという使い方もできます。新しいホームディレクトリには、 雛型 (skeleton) ディレクトリの内容が置かれます。ここには、普通、ユーザが個人的に使うシェルの設定ファイル一式が含まれています。通常、このディレクトリ中のファイルは、 dot 接頭語が取り除かれ dot.< config>と名前が付けられます。 usermod にアカウントを指定して -m を用いる際には、そのユーザのホームディレクトリにある設定ファイルは、雛型ディレクトリのファイルで 上書きされません

ユーザのホームディレクトリが作成されるとき、デフォルトでは、 -b オプション (下記参照) で指定された basehome ディレクトリのサブディレクトリとして作られ、アカウント名と同じ名前が付けられます。コマンドラインに -d オプションを付けると、上書きするようにすることもできます。

-M mode
現在の umask(2) によって変更された指定された mode でユーザのホームディレクトリを作成します。省略されるなら、親プロセスの umask(2) からそれを得られます。このオプションは、 -m フラグと組み合わせる場合のみ役に立ちます。
-k dir
このオプションは、 雛型 ディレクトリをセットします。ユーザのホームディレクトリが作成されるとき、そこから基本の起動時ファイル、設定ファイルがコピーされます。このオプションは、 -d (下記参照) や -m とともに使ったときにのみ意味があります。
-s shell
ユーザのログインシェルを shell にセットまたは変更します。シェルプログラムへのパスが省略されると、 pw は、 /etc/pw.conf で指定された shellpath を探し、それを適切に補います。パスを指定するのは、特別な理由があるのでなければ、避けるべきだということを覚えておきましょう。指定しないことで、プログラムが存在し、かつ実行可能であることを pw に確認させることができるからです。フルパスを指定する (または空のままの ""シェルにしておく) とこのチェックをせず、対話的なログインをさせないアカウントを設定しなければならないときに設定される /nonexistent のようなエントリを作ることができます。
-h fd
このオプションは、 pw が対話的なスクリプトを使ってアカウントパスワードを設定できるような特別のインタフェースを用意します。コマンドラインと環境は、プログラムが情報を受け取るしくみとしては、基本的に安全ではないため、 pw は、ファイル記述子 (通常対話的スクリプトとプログラム間のパイプ) を通してのみ、アカウントとグループのパスワードの設定を許可します。 sh, bash, ksh, perl は、皆、これができるしくみを持っています。 -h 0 が指定されると、代わりに pw は、ユーザのパスワード入力を求めるプロンプトを出し、 stdin をパスワードを読み込むファイル記述子とします。パスワードは、一度しか入力されません。対話的な使用よりもスクリプト向きにできていることに注意して下さい。 passwd(1) の行に合わせて新しいパスワードの確認をしたい場合、この機能は、 pw を呼び出す対話的なスクリプトの一部として実装する必要があります。

引数 fd として‘ -’が与えられると、パスワードとして‘ *’がセットされ、そのアカウントには、パスワードを使ってログインすることができないようになります。

-H fd
指定されたファイルディスクリプタから暗号化されたパスワード文字列を読み込みます。これは、 -h と似ていますが、パスワードをパスワードデータベースに直接書き込むのに適切な形に暗号化して与えなければなりません。

useradd を使うことで、存在するユーザ ID と重複する新しいアカウントを作成することができるようになります。これは、普通エラーになって拒否されますが、 -o オプションにより、重複チェックを上書きしユーザ ID の重複を許すことになります。これは、同一のユーザが異なるコンテキスト(異なるグループ割り当てや異なるホームディレクトリ、異なるシェル)でログインするのを許可する場合に、各アカウントに基本的に同一のアクセス権を与える場合に使用できます。

useradd コマンドは、 -D オプションを使うことで新しいユーザとグループのデフォルトも設定できます。新しいユーザを付け加える代わりに、 pw は、設定ファイル /etc/pw.conf に新しいデフォルトのセットを書き込みます。 -D オプションを使う場合、 -n name-u uid を使ってはいけません。そうでないとエラーになります。 -D を使うと、 useradd コマンドのいくつかのコマンドラインスイッチの意味が変わります。それは:

-D
設定ファイル /etc/pw.conf (もしくは、 -C config オプションが使われたときは、異なる名前の設定ファイル) の中でのデフォルトの値をセットします。
-b dir
ユーザホームディレクトリが作成されるルートディレクトリをセットします。このオプションのデフォルトの値は、 /home ですが、他の好きなディレクトリにセットできます。
-e days
デフォルトのアカウントの有効期間を日数でセットします。 -D を付けずに使われる場合と異なり、引数は、アカウントが作成されてから無効になるまでの日数を指定する数字でなければなりません。 0 という値は、破棄する日付の自動算出を抑制します。
-p days
デフォルトのパスワードの有効期間を日数でセットします。
-g group
新しいユーザのデフォルトのグループをセットします。 -g "" を使って空のグループを指定すると、新しいユーザは、自分自身の私的なプライマリグループ (ログイン名と同じ名前の新しいグループが作成されます) に割り当てられます。グループの指定には、名前または uid を引数として与えることができます。
-G grouplist
新しいユーザが所属するデフォルトのグループ群を指定します。これは、プライマリグループとは、別のグループの集合で、一つのグループをプライマリグループとこの別グループ群の両方に指定することは避けなければなりません。言い替えると、これらの別グループ群では、プライマリグループ 以外の グループの構成メンバが決められます。 grouplist は、コンマ区切りのグループ名もしくは ID で、 /etc/pw.conf の中にシンボル名で保存されます。
-L class
このオプションは、新しいユーザのためのデフォルトのログインクラスをセットします。
-k dir
デフォルトの 雛型 ディレクトリをセットし、 pw がユーザのホームディレクトリを作成するときに、そこからシェルなどの初期化ファイルのプロトタイプがコピーされます。これらのファイルの命名規則については、 -k の説明を参照してください。
-u min, max, -i min, max
これらのオプションは、 pw により作成された新しいアカウントとグループのために割り当てるユーザとグループの最小の ID と最大の ID をセットします。デフォルト値は、どちらも最小 1000 で最大 32000 です。 minmax は、どちらも数字で、max は、min より大きく、両方とも 0 から 32767 の範囲内でなければなりません。一般に 100 未満のユーザ ID とグループ ID は、システムに予約されており、 32000 より大きな数も (システム daemon が使う) 特殊な目的に予約されています。
-w method
-w オプションは、新しく作成されたユーザアカウントのパスワードをセットするのに使われるデフォルトの方法を指定します。 method は、以下のうちの一つです:

no
新しく作成されたアカウントでのログインを不可とします。
yes
アカウント名をパスワードにします。
none
パスワードを空欄にします。
random
ランダムパスワードを生成します。

random’や‘ no’ method は、最も安全です。前者の場合、 pw は、パスワードを生成し、標準出力に出力します。このパスワードは、ユーザがそのアカウントにアクセスするパスワードとしてあなたが発行しますが、ユーザ自身が自分のパスワードを指定 (多分ひどい選択です) するものより適切です。‘ no’ method にした場合、パスワードでアクセスできるアカウントを与えるためにスーパユーザが passwd(1) を使わなければなりません。

-y path
/etc/master.passwd からの情報を直接 NIS と共有しない場合、このオプションは、 NIS が使うデータベースのパス名を設定します。 NIS サーバに対してのみこのオプションを指定するべきでしょう。

userdel コマンドには、指定可能なオプションは、3 つしかありません。 -n name-u uid オプションは、既に説明したとおりです。追加のオプションは、以下のものです。

-r
このオプションで、 pw は、ユーザのホームディレクトリとその内容のすべてを削除します。 pw ユーティリティは、システムからファイルを削除するとき、慎重すぎるやり方をとります。まず、削除されるアカウントの uid がシステムの別のアカウントでも使われていて、パスワードファイルの 'ホーム' ディレクトリが文字‘ /’で始まる正しいパスであった場合には、ファイルは、削除されません。次に、ファイルやディレクトリが実際にそのユーザのものであるか、誰かの所有であるシンボリックリンクがユーザのホームディレクトリ下にある場合にだけ削除されます。最後に、そのユーザの所有であるすべての中身を削除した後、空のディレクトリだけが削除されます。更に別の一掃が必要なときは、管理者に任されます。

メールスプールファイルと crontab は、ユーザ名に無条件に付属しているものなので、アカウントが削除されたとき常に削除されます。 at コマンドによって処理待ちのキューに入っているジョブも、ユーザの uid がユニークであり、かつ、そのシステムの別のアカウントに使われていない場合は、削除されます。

usermod コマンドは、次の 1 つの追加のオプションを加えます:

-l name
このオプションは、‘ name’の既存のアカウント名の変更を許可します。新しい名前は、まだ存在してはいけません、そして、既存のアカウント名を複写するあらゆる試みは、拒否されます。

usershow コマンドは、二種類のフォーマットでアカウントを閲覧できます。フォーマットは、デフォルトで /etc/master.passwd で使われているものと同じで、パスワードフィールドは、‘ *’に置き換えられています。 -P オプションが使われると、 pw は、より人間に読みやすい形でアカウントの詳細を出力します。 -7 オプションが使われると、アカウントの詳細が v7 フォーマットで表示されます。 -a オプションは、現在ファイルにあるすべてのユーザをリストします。 -F を使用すると、存在しないアカウントであってもその詳細を表示するよう、 pw に強制します。

usernext コマンドは、利用可能な次のユーザ ID とグループ ID をコロン区切りで返します。これは、通常 pw を使う対話的なスクリプトやフロントエンド用です。

グループオプション

グループを操作するコマンドには、 -C-q オプション (前セクションの始めに説明があります) が使えます。他のグループ関係のコマンド:
-n name
グループ名を指定します。
-g gid
グループの ID を数字で指定します。

グループ名は、uid を意味し、逆も同様なので、アカウント名と ID フィールドとして、普通どちらか一つを付ければよいのです。両方を指定する必要があるのは、新しいグループに指定したグループ ID を設定するとき、または存在するグループの uid を変えたいときだけです。

-M memberlist
このオプションは、存在するユーザを新しいグループに (groupaddで) 加えたり、存在するメンバリストを (groupmodで) 新しいものに取り換えるもうひとつの方法です。 memberlist は、正当で、存在するユーザ名または uid のコンマ区切りのリストです。
-m newmembers
-M と似ています、このオプションによって、メンバの既存のリストを置き換えないで、グループに既存のユーザを 追加 することができます。ログイン名またはユーザ ID を使用することができ、重複するユーザは、黙って削除されます。
-d oldmembers
-M と似ています、このオプションによって、メンバの既存のリストを置き換えないで、グループから既存のユーザを 削除 することができます。ログイン名またはユーザ ID を使用することができ、重複するユーザは、黙って削除されます。

groupadd にも、存在するグループ ID を新しいグループに割り当てる -o オプションがあります。デフォルトの動作は、グループ追加の試みを拒否することになっており、このオプションは、グループ ID の重複チェックを上書きします。グループ ID を重複させる必要は、滅多にありません。

groupmod コマンドには、一つの追加オプションがあります:

-l name
このオプションで、存在するグループ名を‘ name’に変更することができます。新しい名前は、存在しないものでなければならず、存在するグループ名と重複させようとすると拒否されます。

groupshow へのオプションは、 -u uid の代わりにグループ ID を指定する -g gid を付けた usershow と同じです。 -7 オプションは、 groupshow コマンドには、適用されません。

groupnext コマンドは、次に使用できるグループ ID を標準出力に返します。

ユーザのロック

pw ユーティリティは、ユーザに対する簡単なパスワードロック機構を持ちます。これは、文字列‘ *LOCKED*’を master.passwd のパスワードフィールドに前置し、認証を失敗させることにより機能します。

lockunlock のコマンドは、ユーザ名または UID を取り、それぞれ当該アカウントをロック/アンロックします。これらのコマンドは、前述の -V, -C, -q オプションを受け付けます。

各コマンドに使用可能なオプションの要約として、
pw [command] help
が使えます。例えば、
pw useradd help
は、useradd 操作に使用できるすべてのオプションをリストします。

pw ユーティリティは、passwd ファイルの GECOS フィールド (ユーザの姓名、オフィス、業務用電話番号、自宅電話番号のサブフィールドがあります) に 8 ビット文字を使うことができます。しかし、8 ビット文字をユーザログイン名やグループ名に使うことはできません。 8 ビット文字の使用に際して、以下の点に注意してください。インターネットとの接続に際しては、メール配送プログラムが 8BITMIME をサポートしていることが要求されており、8 ビット文字を含むヘッダは、 7 ビットの quoted-printable フォーマットに変換されてしまいます。 sendmail(8) は、この機能をサポートしています。 GECOS フィールドに 8 ビット文字を置く際は、ユーザのデフォルトロケールとデフォルト文字集合といっしょに使用するべきで、これらを使用せずに実装してはいけません。 8 ビット文字の使用は、 fingerd(8) のように、インターネット経由で GECOS フィールドの内容をやりとりする他のプログラムにも影響を及ぼす可能性があります。 TCP/IP クライアントの中には、IRC のように、少数ながらもパスワードファイルに指定されたフルネームをデフォルトで使用するものもあります。

ユーザやグループの追加や削除のときに、 pw ユーティリティは、ログファイルを /var/log/userlog ファイルへ書きます。このログファイルの位置は、 pw.conf(5) で変更可能です。

関連ファイル

/etc/master.passwd
ユーザデータベース
/etc/passwd
Version 7 フォーマットのパスワードファイル
/etc/login.conf
ユーザケーパビリティデータベース (user capability database)
/etc/group
グループデータベース
/etc/pw.conf
pw コマンドのデフォルトオプションファイル
/var/log/userlog
ユーザ/グループ修正ログファイル

終了ステータス

pw ユーティリティは、操作に成功すれば、EXIT_SUCCESS を返し、そうでなければ pw は、 sysexits(3) によって定義された次の終了コードの 1 つを返します:
EX_USAGE
  • コマンドラインのシンタックスエラー (不適切なキーワード、未定義オプション)。
EX_NOPERM
  • root でないユーザとして、何らかの更新を実行しようとした。
EX_OSERR
  • メモリアロケーションエラー。
  • パスワードファイル記述子の読み出しエラー
EX_DATAERR
  • コマンドライン上やパスワードファイル記述子の、間違った、または正しくないデータや欠落データ。
  • root アカウントの名前や uid の変更、削除をしようとした。
EX_OSFILE
  • 雛型ディレクトリが適切でない、または存在しない。
  • 基本ホームディレクトリが適切でない、または存在しない。
  • 指定したシェルが適切でない、または存在しない。
EX_NOUSER
  • 指定されたユーザ、ユーザ ID、グループ、グループ ID が存在しない。
  • 記録、追加、または更新されたユーザ、グループが予期せず無くなった。
EX_SOFTWARE
  • 指定した範囲には、未使用グループ ID、ユーザ ID が残っていない。
EX_IOERR
  • 設定ファイルの書き換えができない。
  • グループやユーザデータベースファイルの更新時エラー。
  • パスワードまたはグループデータベースファイルの更新時エラー。
EX_CONFIG
  • 基本ホームディレクトリが設定されていない。

歴史

pw ユーティリティは、SYSV の shadow サポートで使われていた多くのオプションを模倣して書かれましたが、 4.4BSD オペレーティングシステムに特有のパスワードフィールド、グループフィールドに合わせて変更されています。また、ほとんどの要素が一つのコマンドにまとめられています。
October 29, 2012 FreeBSD