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

名称

adduser新しいユーザを加えるためのコマンド

書式

adduser [ -CDENShq][ -G groups][ -L login_class][ -M mode][ -d partition][ -f file][ -g login_group][ -k dotdir][ -m message_file][ -s shell][ -u uid_start][ -w type]

解説

adduser ユーティリティは新しいユーザを加えるための、 pw(8) コマンドを利用して実装されたシェルスクリプトです。パスワード, グループ, シェル等のデータベースをチェックし、 passwd/group の登録を行い、ホームディレクトリとドットファイルを作成し、新しいユーザに歓迎メッセージを送ります。 2 つの動作モードをサポートします。すなわち、 1 度に 1 人ずつのユーザを追加するコマンドラインでの対話モードと、新規ユーザのリストをファイルで与えてユーザの介在無しに動作するバッチモードです。

制限事項

username
ログイン名です。 pw(8) が受け付けるログイン名に制限されます。一般的に、これは、‘ -’文字で始まることができない、英小文字または数字のみを含むことができることを意味します。長さは 16 文字までです。この制限の理由は、歴史的な物です。美的な理由からこの制限を破りたいとする人々はいつもいましたが、 UNIX における基本的なパラメータを変更するほどの重要な理由ではありませんでした。 < utmp.h> ファイル内の UT_NAMESIZE パラメータを変更し、全てを再コンパイルすることで、変更できます。それは動作しますが、前もってコンパイルされたプログラム、または NIS のように、8 文字の名前の制限を仮定するソースで問題が起こります。 NIS のプロトコルは、ユーザ名を 8 文字と定めています。電子メールアドレスとして、もっと長いログイン名を必要とする場合には、別名を /etc/mail/aliases ファイルに定義することができます。
full name
典型的には gecos フィールドとして知られ、通常はユーザの完全な名前を格納します。さらに、コンマで区切った値のリスト、例えば職場の番号や職場と家の電話番号を格納可能です。名前にアンパサンドが含まれる場合、他のプログラムが表示するときに、これを先頭を大文字にしたログイン名で置き換えます。‘ :’ (コロン) は、使えません。
shell
-S 引数が指定されていなければ、シェルデータベースに定義されている有効なシェル ( /etc/shells) だけが有効です。さらに、シェルのベース名かフルパスを指定します。
UID
自動生成されますが、自分で指定することもできます。ただし、32000 よりも小さい数字でなければなりません。
GID/login group
自動生成されますが、自分で指定することもできます。ただし、32000 よりも小さい数字でなければなりません。
password
空のパスワード、パスワード無効化、ランダム生成パスワード、素のテキストで指定するパスワードのいずれかを選択可能です。パスワードは暗号化されてからユーザデータベースに保存されます。

ユニークなグループ

たぶん、利用者は、他のほとんどのスキーマ (仕組み)では破たんする、このスキーマ (仕組み) で、何を行うことが できる かを見逃しています。個々のユーザをそのユーザ独自のグループに入れることで、通常の 022 の代りに umask を 002 としておいても安全になり、ホームディレクトリにファイルを作っても、他の人にファイルを変更される心配がなくなります。

共有場所を作るためには、 UID/GID を別に設けて、ユーザを個別にその新しいグループに入れることで、その場所へのアクセスを可能とすべきです。

この uid/gid の管理モデルは、たくさんのユーザをグループにまとめるより柔軟性があり、共有場所で仕事をする時に umask をいじり回さずにすみます。

この方法をほぼ 10 年間使っていますが、ほとんどの場合に使えることがわかり、じゃまになったことはありませんでした。(Rod Grimes)

設定

adduser ユーティリティは設定情報を /etc/adduser.conf から読み込みます。このファイルが存在しない場合、規定のデフォルトを使用します。このファイルは手で編集可能ですが、 -C コマンドライン引数を使用する方が安全です。この引数を使用すると、 adduser は対話的入力を開始し、問い合わせに対する回答を /etc/adduser.conf に保存し、ユーザデータベースを変更せずに確認しつつ終了します。コマンドラインで指定したオプションは、このファイルに保存したものに優先します。

オプション

-C
新規設定ファイルを作成して終了します。このオプションは -f と排他です。
-d partition
ホームパーティション。すべてのユーザディレクトリがあるデフォルトパーティションです。 /nonexistent パーティションは特別なものと考えられています。 adduser スクリプトは、その名前でホームディレクトリを作成したり、そこにファイルをコピーしたりすることはありません。それ以外であれば、デフォルトでホームディレクトリの作成を試みます。
-D
ホームディレクトリの作成を試みません。
-E
アカウントを無効化します。このオプションは、文字列“ *LOCKED*”をパスワードフィールドの前に付けることで、アカウントをロックします。アカウントのアンロックは、スーパユーザが次の pw(8) コマンドを使用して行います:

pw unlock [ name | uid]
-f file
生成するアカウントのリストを file から得ます。 file が“ -”の場合、リストを標準入力から得ます。このオプションが指定された場合、 adduser はバッチモードで動作し、ユーザ入力を求めません。あるアカウント処理中にエラーが発生した場合、メッセージを標準エラーに書き込み、次のアカウントに取り組みます。入力ファイルの書式は後述します。
-g login_group
通常は、ログイングループが指定されない場合、ユーザ名と同じであると仮定されます。このオプションは、 login_group をデフォルトとします。
-G groups
追加グループの空白で区切られたリストです。このオプションは、ユーザに付与する追加グループを指定します。ユーザは、ログイングループに加え、これらのグループのメンバです。
-h
オプションの要約を表示して、終了します。
-k directory
directory のファイルを新規ユーザのホームディレクトリへコピーします。 dot.foo.foo にリネームされます。
-L login_class
デフォルトログインクラスを設定します。
-m file
file の歓迎メッセージを送ります。 fileno を指定すると、新規ユーザへメッセージを送りません。メッセージファイルが adduser スクリプトの内部変数を参照可能であることに注意してください。
-M mode
mode に設定されたパーミッションでホームディレクトリを作成します。
-N
デフォルト設定ファイルを読み込みません。
-q
最小のユーザフィードバック。特に、ランダムパスワードは標準出力にエコーされません。
-s shell
新規ユーザのデフォルトシェル。 shell 引数は、シェルのベース名かフルパスです。 -S 引数が指定されていなければ、シェルが正当なシェルであるとみなされるためには、 /etc/shells に含まれるか、特殊シェル nologin であることが必要です。
-S
指定されたシェルの存在や妥当性を確認しません。
-u uid
uid から開始する UID を使用します。
-w type
パスワードタイプ。 adduser ユーティリティは、生成するパスワードの種類を指定することができます。 type 引数は以下の値のうちのいずれかです:
no
パスワードの無効化。暗号化文字列の代りに、パスワードフィールドは単一の‘ *’文字になります。スーパユーザが手動でパスワードを有効化するまで、ユーザはログインできません。
none
空文字列をパスワードとして使用します。
yes
ユーザが提供した文字列をパスワードとして利用します。対話モードでは、ユーザはパスワード入力を求められます。バッチモードでは、最後 (10 番目) のフィールドがパスワードだとみなされます。
random
ランダム文字列を生成し、これをパスワードとします。パスワードは標準出力へエコーされます。さらに、 randompass 変数を介して、ファイルへ含めることが可能です。

フォーマット

-f オプション使用時には、アカウント情報は特定の書式で格納する必要があります。空行または‘ #’で開始する行は無視されます。他のすべての行は、コロン (‘ :’) で区切られた 10 個のフィールド (後述) から成ります。コマンドラインオプションは、これらの値に優先しません。パスワードフィールドのみが、‘ :’文字を文字列の一部として持つことができます。

name: uid: gid: class: change: expire: gecos: home_dir: shell: password
name
ログイン名。このフィールドは空であってはなりません。
uid
数値のログインユーザ ID。このフィールドが空の場合、自動生成されます。
gid
数値のプライマリグループ ID。このフィールドが空の場合、ユーザ名と同じ名前のグループが生成され、その GID が使用されます。
class
ログインクラス。このフィールドは空であっても構いません。
change
パスワードエージング。このアカウントのパスワードを変更する日付を表現します。このフィールドの書式は、 pw(8) への -p 引数のものと同じです。これは dd- mmm- yy[ yy]であり、 dd は日、 mmm は数値またはアルファベットの月で“ 10”や“ Oct”、 yy[ yy]は 4 桁または 2 桁の年です。現在の日付からの相対で時を指定したい場合、次の書式を使用します: + n[ mhdwoy]。ここで、 n は数値であり、この後に分・時間・日・週・月・年を続け、これらけの期間が経過したらパスワードが変更されねばならないことを示します。このフィールドを空にすることで、この機能をオフにできます。
expire
アカウントの満了。このフィールドは、アカウントの満了日を表現します。指定した日付より後にはアカウントは使用できません。このフィールドの書式は、パスワードエージングのものと同じです。このフィールドを空にすることで、この機能をオフにできます。
gecos
ユーザの完全な名前と追加情報。
home_dir
ホームディレクトリ。このフィールドが空の場合、ホームパーティションにユーザ名を追加することで自動生成されます。 /nonexistent ホームディレクトリは特別なものと考えられていて、ユーザのためにホームディレクトリを作成しないことを意味すると解釈されます。
shell
ログインシェル。このフィールドは、有効なログインシェルのベース名かフルパスを含むことが必要です。
password
ユーザパスワード。このフィールドは素のテキスト文字列を含み、ユーザデータベースに置かれる前に暗号化されます。パスワードタイプが yes であり、このフィールドが空の場合、このアカウントは空のパスワードになるものとみなされます。パスワードタイプが random であり、このフィールドが空では ない 場合、この内容がパスワードとして使用されます。 -w オプションが引数 no または none と共に使用された場合、このフィールドは無視されます。このフィールドを‘ :’で終端させないように。これはパスワードの一部とみなされてしまいます。

関連ファイル

/etc/master.passwd
ユーザのデータベース
/etc/group
グループのデータベース
/etc/shells
シェルデータベース
/etc/login.conf
ログインクラスデータベース
/etc/adduser.conf
adduser 用の設定ファイル
/etc/adduser.message
adduser 用のメッセージファイル
/usr/share/skel
ログインディレクトリの雛型
/var/log/adduser
adduser のログ記録ファイル

歴史

adduser ユーティリティは FreeBSD 2.1 から導入されました。

作者

マニュアルページと Perl による元のスクリプトは Wolfram Schneider <wosch@FreeBSD.org>によって書かれました。追加機能を持つ、Bourne シェルスクリプトで書かれた置き換えスクリプトと、これに伴なうマニュアルページの更新を Mike Makonnen <mtm@identd.net>が行いました。

バグ

$username$randompass といった変数を新規ユーザへ送るメッセージ中で adduser が正しく展開できるために、メッセージファイルの各行をシェルで評価する必要があります。これは、メッセージファイル中にシェルコマンドを格納可能であることを意味します。 adduser ユーティリティは、攻撃者がこの機能を使用する可能性を和らげるために、 root ユーザ所有の root ユーザのみが書き込み可能なファイル以外を評価することを拒否します。さらに、シェル特殊文字やオペレータは、メッセージファイルで使用する場合、エスケープする必要があります。

また、パスワードエージングとアカウント満了時は、現在のところバッチモードでと /etc/adduser.conf で指定された場合にのみ設定可能です。対話モードでもユーザが設定可能となるべきです。

September 15, 2012 FreeBSD