スポンサーリンク

PW(8) FreeBSD システム管理者マニュアル 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] [−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] [−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] [−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] [−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 でプライマリグループには加えるべきではありませ ん。また、グループのメンバの変更は現在のログインにはすぐに は影響されず、変更後のログインにだけ影響します。

−L class
このオプションは生成されたユーザのログインクラスをセットし ます。ユーザログインクラスに関する情報は login.conf(5)passwd(5) を参照して下さい。

−m
このオプションは、ユーザのホームディレクトリの作成を試みる ように pw に指示します。もちろんこれは useradd で新しいアカ ウントを加えるときにも役に立ちますが、すでに存在するユーザ のホームディレクトリを、ファイルシステムの別の場所に移動す るという使い方もできます。新しいホームディレクトリには、 雛 型(skeleton) ディレクトリの内容が置かれます。ここには、普 通、ユーザが個人的に使うシェルの設定ファイル一式が含まれて います。 usermod にアカウントを指定して −m を用いる際には、 そのユーザのホームディレクトリにある設定ファイルは、雛型 ディレクトリのファイルで 上書きされません。

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

−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 がユーザのホー ムディレクトリを作成するときに、そこからシェルなどの初期化 ファイルのプロトタイプがコピーされます。

−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 がユニークであり、かつ、 そのシステムの別のアカウントに使われていない場合は削除されます。

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

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

グループオプション

グループを操作するコマンドには、 −q オプション (前セクションの始めに 説明があります) が使えます。他のグループ関係のコマンド:

       −n name

グループ名を指定します。

−g gid
グループの ID を数字で指定します。

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

−M memberlist
このオプションは、存在するユーザを新しいグループに (groupaddで) 加えたり、存在するメンバリストを (groupmodで) 新しいものに取り換えるもうひとつの方法です。 memberlist は 正当で、存在するユーザ名または uid のコンマ区切りのリスト です。

−m newmembers
−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 ユーティリティは、操作に成功すると EXIT_SUCCESS を返し、そうでなければ sysexits(3) により定義された以下の戻り値のうちどれかひとつを返します:

       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 [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/master.passwd.new
マスタパスワードファイルの一時コピー
/etc/passwd.new
Version 7 パスワードファイルの一時コピー
/etc/group.new
グループファイルの一時コピー
/etc/pw.conf
pw コマンドのデフォルトオプションファイル
/var/log/userlog
ユーザ/グループ修正ログファイル

関連項目

chpass(1), passwd(1), group(5), login.conf(5), passwd(5), pw.conf(5), pwd_mkdb(8), vipw(8)

歴史

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

FreeBSD 10.0 January 11, 2004 FreeBSD 10.0

スポンサーリンク