useradd - ユーザを追加する

useradd

useraddコマンドはLinuxのユーザを追加できるコマンドになります。このコマンドは管理者権限が必要なコマンドになります。ユーザを追加した後はpasswdコマンドでパスワードを設定できます。

ユーザの情報は/etc/passwdのファイルに保存されます。また、ユーザのパスワードは暗号化され、/etc/shadowのファイルに保存されます。

useraddコマンドとは別にDebian系のOSではadduserコマンドが存在します。このadduserコマンドは対話的にユーザを追加できるコマンドで、ユーザを追加するuseraddコマンド・パスワードを設定するpasswdコマンド・現実のユーザ情報を設定するchfnコマンドを合わせたようなコマンドになります。

スポンサーリンク

ユーザを追加

useraddコマンドは管理者権限が必要なコマンドになります。useraddコマンドの引数は追加したいユーザ名を入力して実行すると、ユーザを追加できます。

コマンド例

その後、passwdコマンドを利用するとパスワードを設定できます。このパスワード入力は新しいパスワードを入力した後に、もう一度同じパスワードを入力します。

コマンド例と実行結果

ユーザ情報を確認

補足

useraddコマンドでユーザが追加されたときに、/etc/passwd等のユーザ情報を管理しているファイルに追加されたユーザの情報の行が追加されます。
「ユーザ情報を確認」でのresult.shは、/etc/passwd等のファイルにあるユーザ情報や/etc/group等のグループ情報を確認してみる簡易的なスクリプトになります。このスクリプトの引数としてユーザ名が入ります。result.shの内容は以下のようになります。

result.sh

/etc/passwd等のファイルのデータは、":"の文字でデータが区切られています。それぞれのファイルでのそれぞれの列の意味はmanコマンドで意味を確認できます。

man 5 passwd
man 5 shadow
man 5 group
man 5 gshadow

passwdコマンドでパスワードを設定すると、/etc/shadowのファイルの2列目に暗号化されたパスワードがデータに追加されます。

さらに、chfnコマンドを用いると現実のユーザ情報を入力することができます。ただし、プライバシーの問題もあるため、設定するかどうかはよく考える必要があります。

また、上の情報はfingerコマンドを利用することで、情報を参照することができます。

useraddコマンドのオプション

ホームディレクトリのためのベースディレクトリを指定
(-bオプション)

-bオプションはホームディレクトリのためのベースディレクトリを指定します。
ベースディレクトリを指定したら、ベースディレクトリ名(例:/home/basedir)と作成されるユーザ名(例:testuser)を合わせたディレクトリ名がホームディレクトリ(例:/home/basedir/testuser)になります。

コマンド例と実行結果

-mオプションはホームディレクトリを自動で生成するオプションです。
'sudo su - testuser'の'-'は、-lまたは--loginオプションと同じ意味で、このコマンドはtestuserというユーザに直接ログインしたかのように、環境を初期化してユーザを切り替えるコマンドになります。
また、ユーザにログインするコマンドとしてはloginコマンドがあります。

ホームディレクトリを自動で作成
(-mオプション)

-mオプションを用いると、作成するユーザのホームディレクトリが存在しないときに、ホームディレクトリを自動で作成します。

コマンド例と実行結果

名前情報を設定
(-cオプション)

-cオプションはコメントとして名前情報を設定できます。この情報はfingerコマンドで確認できます。

コマンド例と実行結果

ホームディレクトリを指定
(-dオプション)

-dオプションはホームディレクトリを指定できます。ホームディレクトリはユーザがログインしたときの最初のディレクトリになります。

-dオプションを利用しない場合、デフォルトのホームディレクトリは、ベースディレクトリに作成するユーザ名をつけたディレクトリになります。

コマンド例と実行結果

設定ファイルの値を上書き
(-Kオプション)

-Kオプションは/etc/login.defにあるユーザ作成時に利用される設定をKEY=VALUEの形式で上書きできます。また、-Kオプションは複数回利用できます。

指定できる変数の例

設定変数意味
CREATE_HOMEホームディレクトリを作成するかどうか
GID_MAXグループID(GID)の最大値
GID_MINグループID(GID)の最小値
PASS_MAX_DAYSパスワードの有効日数
(指定しない場合、値は-1で制限なし)
PASS_MIN_DAYSパスワードの変更から次に変更できるまでの日数
(指定しない場合、値は-1で制限なし)
PASS_WARN_AGEパスワードの期限切れの何日前に注意喚起をするかの日数
(負の値で注意なし)
UID_MAXユーザID(UID)の最大値
UID_MINユーザID(UID)の最小値

コマンド例と実行結果

ユーザアカウントの有効期限を設定
(-eオプション)

-eオプションを用いるとユーザアカウントに有効期限を設定できます。その有効期限の日付がきた場合、そのユーザはロックされログインできなくなります。
有効期限の日付の書式はYYYY-MM-DDになります。

コマンド例と実行結果

ユーザの有効期限を変更するにはusermodコマンドやchageコマンドが利用できます。usermodコマンドの場合は-eオプションを用いて、以下のように変更できます。

また、chageコマンドはパスワードなど有効期限を設定できるコマンドになります。chageコマンドの場合は-Eオプションを用いるとアカウントの有効期限を変更できます。アカウントの有効期限の書式はuseraddコマンドと同様にYYYY-MM-DDの書式になります。

usermodコマンド、chageコマンドともにオプションの後の日付を-1の数字にすることで、アカウントの有効期限はなくなります。

パスワードが期限切れになりアカウントロックされるまでの日数を設定
(-fオプション)

-fオプションはパスワードが期限切れになってから、アカウントがロックされるまでの日数を設定できます。また、-fオプションに-1を指定することでこの機能を無効にできます。

コマンド例と実行結果

chageコマンドの-dオプションでパスワードを変更した日付を変更できます。

グループの設定
(-gオプション)

-gオプションを利用するとユーザの作成時に、既に存在しているグループからグループを設定できます。

コマンド例と実行結果

複数のグループを設定
(-Gオプション)

-Gオプションを用いると複数のグループを設定できます。グループはコンマ区切りでリストします。

コマンド例と実行結果

テンプレートのディレクトリを指定
(-kオプション)

-kオプションはテンプレートのディレクトリを指定できます。-kオプションは-mオプションでホームディレクトリを自動作成するときに、テンプレートのディレクトリにあるファイルがホームディレクトリへコピーされます。

デフォルトのテンプレートとなるディレクトリは/etc/skelのディレクトリや/etc/default/useraddの変数SKELで記述されるディレクトリになります。

コマンド例と実行結果

ユーザが使用するシェルを設定
(-sオプション)

-sオプションはユーザが使用するシェルを設定できます。ログインをしないユーザの場合はnologinのシェルを指定するとログインできないユーザを作成できます。

コマンド例と実行結果

ユーザ作成のデフォルト値を確認
(-Dオプション)

-Dオプションはユーザ作成のデフォルト値を確認できます。
設定ファイルの/etc/default/useraddを編集することで変更できます。

コマンド例と実行結果

スポンサーリンク