useraddコマンド : ユーザアカウント作成

コマンド概要
-
useraddコマンドはシステムにユーザアカウントを新規作成するコマンドです。ユーザ作成には以下の項目を指定することができます。
項目 コメント ホームディレクトリ ユーザ有効期限 パスワード有効期限 所属グループ 所属補助グループ ログインシェル Noteユーザアカウントを作成すると以下のファイルにユーザ情報が追加されます。
/usr/passwd # ユーザリスト /etc/shadow # 暗号化されたパスワードリスト /etc/group # グループと所属ユーザリスト
-
useraddコマンドは
/etc/login.defs
を設定ファイルとして読み込んで実行します。このファイルにはユーザに付加させる、ID、GID、パスワード暗号アルゴリズム、などの情報が記述されています。 -
ホームディレクトリ作成オプションを指定した場合、デフォルトでは
/home
配下に指定ユーザ名のディレクトリが作成され/etc/skel
配下から初期設定ファイルをコピーします。NoteRedHat系Linuxでオプションを指定してなくてもデフォルトでホームディレクトリを作成します。
コマンド書式
useradd [オプション] ユーザ名
オプション | 説明 |
---|---|
-c 文字列 | ユーザ作成時にコメント(=文字列)を付加する。 |
-D | ユーザ作成時の標準設定を出力する。「/etc/default/useradd」の中身が出力される。 |
-d 文字列 | ユーザのホームディレクトリを絶対パス(=文字列)で指定する。 |
-e YYYY-MM-DD | ユーザアカウントの有効期限日付(=YYYY-MM-DD)を指定する。 |
-f 日数 | ユーザアカウントの有効期限が切れてから利用不能になるまでの日数を変更する(デフォルトは-1が設定されており有効期限は無限になっている)。有効期限が切れると、ユーザは新しいパスワードを設定する必要がある。 |
-g 文字列 | ユーザに所属させるメイングループ(Primary Group)を「グループ名もしくはグループID」(=文字列)で指定する。 |
-G 文字列 | ユーザに所属させる1つ以上のサブグループ(Secondary Group)を「グループ名もしくはグループID」(=文字列)で指定する。「,」区切りで複数グループ指定が可能。 |
-k 文字列 | 新ユーザーのホームディレクトリに初期ファイルや設定を展開する際にテンプレートとするファイルが格納されているディレクトリパス(=文字列)を指定する。 |
-m | ホームディレクトリが存在しない場合は作成する。このオプションを指定しない場合はホームディレクトリは作成されない。 RedHat系Linuxでは指定なしでもホームディレクトリは作成される。 |
-r | システムアカウントを作成する。 |
-s 文字列 | ログインシェルを絶対パス(=文字列)で指定する。指定がなければシステムデフォルトのシェルが指定される。 |
-u 数値 | ユーザID(=数値)を指定する。 |
コマンド使用例
項目 | 値 | 補足 |
---|---|---|
OS | Amazon Linux 2 | |
シェル | bash 4.2.46 | |
PS1 | [\u@\h \W]$ | プロンプト表示形式は [ユーザ名@ホスト名 カレントディレクトリ名]ユーザ権限 |
PS2 | > | 継続行のプロンプト表示形式 |
useradd : ユーザ作成
-
useradd
コマンドを使用するとシステムにユーザアカウントを新規作成することができます。コマンド例// rootユーザ操作 // ユーザリスト状態(ユーザアカウント作成前) [root@hostname ~]# cat /etc/passwd | grep username // ホームディレクトリ状態(ユーザアカウント作成前) [root@hostname ~]# ls /home/ | grep username // メールスプール状態(ユーザアカウント作成前) [root@hostname ~]# ls /var/spool/mail/ | grep username // ユーザアカウント作成 [root@hostname ~]# useradd username // ユーザリスト状態(ユーザアカウント作成後) [root@hostname ~]# cat /etc/passwd | grep username username:x:1002:1002::/home/username:/bin/bash // ホームディレクトリ状態(ユーザアカウント作成後) [root@hostname ~]# ls /home/ | grep username username // メールスプール状態(ユーザアカウント作成後) [root@hostname ~]# ls /var/spool/mail/ | grep username username // ユーザ情報(ユーザアカウント作成後) [root@hostname ~]# id username uid=1002(username) gid=1002(username) groups=1002(username)
useradd -c : コメント付加
-
-c
オプションを使用するとユーザ作成時にコメントを付加することができます。コマンド例// rootユーザ操作 // ユーザリスト状態(ユーザアカウント作成前) [root@hostname ~]# cat /etc/passwd | grep username // ユーザアカウント作成(コメント付き) [root@hostname ~]# useradd -c 'ABCDEFGHI' username // ユーザリスト状態(ユーザアカウント作成後) [root@hostname ~]# cat /etc/passwd | grep username username:x:1002:1002:ABCDEFGHI:/home/username:/bin/bash
useradd -D : ユーザ標準設定表示
-
-D
オプションを使用するとユーザ作成時の標準設定を出力されます。コマンド例// ユーザ作成時の標準設定を表示する [username@hostname ~]$ useradd -DGROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
useradd -d : ホーム指定
-
-d
オプションを使用するとユーザのホームディレクトリを指定することができます。コマンド例// rootユーザ操作 // ホームディレクトリ状態(作成前) [root@hostname ~]# ls -l /home/hoge/ ls: cannot access /home/hoge/: No such file or directory // ユーザ作成(ホームディレクトリ指定) [root@hostname ~]# useradd -d /home/hoge/ username // ホームディレクトリ状態(作成後) [root@hostname ~]# ls -l /home/hoge/ total 0 // 作成したユーザに変更 [root@hostname ~]# su username // ホームディレクトリ確認 [username@hostname root]$ cd ~ [username@hostname hoge]$ pwd /home/hoge
useradd -e : ユーザ有効期限
-
-e
オプションを使用するとユーザアカウントの有効期限日付を指定することができます。コマンド例// rootユーザ操作 // ユーザ作成(期限指定なし) [root@hostname ~]# useradd username1 // ユーザ有効期限日付を確認 // →期限日付なし [root@hostname ~]# chage -l username1 | grep 'Account expires' Account expires : never // ユーザ作成(期限指定あり) [root@hostname ~]# useradd -e 2023-10-31 username2 // ユーザ有効期限日付を確認 // →期限日付あり [root@hostname ~]# chage -l username2 | grep 'Account expires' Account expires : Oct 31, 2023
useradd -f : パスワード有効期限
-
-f
オプションを使用するとユーザアカウントのパスワードの有効期限日付を指定することができます。コマンド例// rootユーザ操作 // ユーザ作成(期限指定なし) [root@hostname ~]# useradd username1 // ユーザのパスワード有効期限確認 // →「-1」で有効期限が無限。つまり有効期限なし [root@hostname ~]# passwd -S username1 username1 LK 2023-10-13 0 99999 7 -1 (Password locked.) // ユーザ作成(期限指定あり) [root@hostname ~]# useradd -f 30 username2 // ユーザのパスワード有効期限確認 // →「30」で有効期限が30日 [root@hostname ~]# passwd -S username2 username2 LK 2023-10-13 0 99999 7 30 (Password locked.)
useradd -g : メイングループ指定
-
-g
オプションを使用するとユーザに所属させるメイングループを指定することができます。コマンド例// rootユーザ操作 // グループ情報確認 [root@hostname ~]# cat /etc/group | grep groupname groupname:x:9999: // ユーザ作成(プライマリグループ名指定) [root@hostname ~]# useradd -g groupname username1 // ユーザ情報確認 [root@hostname ~]# id username1 uid=1002(username1) gid=9999(groupname) groups=9999(groupname) // ユーザ作成(プライマリグループID指定) [root@hostname ~]# useradd -g 9999 username2 // ユーザ情報確認 [root@hostname ~]# id username2 uid=1003(username2) gid=9999(groupname) groups=9999(groupname)
useradd -G : サブグループ指定
-
-G
オプションを使用するとユーザに所属させる1つ以上のサブグループを指定することができます。コマンド例// rootユーザ操作 // グループ情報確認 [root@hostname ~]# cat /etc/group | grep groupname groupname1:x:9998: groupname2:x:9999: // ユーザ作成(サブグループ名指定) [root@hostname ~]# useradd -G groupname1,groupname2 username1 // ユーザ情報確認 [root@hostname ~]# id username1 uid=1002(username1) gid=1002(username1) groups=1002(username1),9998(groupname1),9999(groupname2) // ユーザ作成(サブグループID指定) [root@hostname ~]# useradd -G 9998,9999 username2 // ユーザ情報確認 [root@hostname ~]# id username2 uid=1003(username2) gid=1003(username2) groups=1003(username2),9998(groupname1),9999(groupname2)
useradd -k : テンプレート指定
-
-k
オプションを使用すると新ユーザーのホームディレクトリに初期ファイルや設定を展開する際にテンプレートとするファイルが格納されているディレクトリを指定することができます。コマンド例// rootユーザ操作 // テンプレートディレクトリ確認 [root@hostname ~]# ls -al /etc/skel/ total 24 drwxr-xr-x 2 root root 62 Oct 2 00:00 . drwxr-xr-x 85 root root 8192 Oct 2 00:00 .. -rw-r--r-- 1 root root 18 Oct 2 00:00 .bash_logout -rw-r--r-- 1 root root 193 Oct 2 00:00 .bash_profile -rw-r--r-- 1 root root 231 Oct 2 00:00 .bashrc // ユーザ作成(設定テンプレートディレクトリ指定) [root@hostname ~]# useradd -k /etc/skel -m username // ホームディレクトリ確認(ユーザ作成後) [root@hostname ~]# ls -al /home/username total 12 drwx------ 2 username username 62 Oct 2 00:00 . drwxr-xr-x 5 root root 53 Oct 2 00:00 .. -rw-r--r-- 1 username username 18 Oct 2 00:00 .bash_logout -rw-r--r-- 1 username username 193 Oct 2 00:00 .bash_profile -rw-r--r-- 1 username username 231 Oct 2 00:00 .bashrc // テンプレートディレクトリとホームディレクトリに差分なし [root@hostname ~]# diff /etc/skel /home/username
useradd -m : ホームディレクトリ作成
-
-m
オプションを使用するとホームディレクトリが存在しない場合は作成します。NoteRedHat系Linuxでは指定なしでもホームディレクトリは作成されます。コマンド例// rootユーザ操作 // ホームディレクトリ確認(ユーザ作成前) [root@hostname ~]# ls -l /home/username ls: cannot access /home/username: No such file or directory // ユーザ作成(ホームディレクト作成) // →Amazon Linux では指定しなくてもホームディレクトリは作成される [root@hostname ~]# useradd -m username // ホームディレクトリ確認(ユーザ作成後) [root@hostname ~]# ls -l /home/username total 0
useradd -r : システムアカウント作成
-
-r
オプションを使用するとシステムアカウントを作成することができます。コマンド例// rootユーザ操作 // ユーザ作成(システムアカウント作成) useradd -r username
useradd -s : ログインシェル指定
-
-s
オプションを使用するとログインシェルを指定することができます。コマンド例// rootユーザ操作 // ユーザ作成(ログインシェル指定なし) [root@hostname ~]# useradd username1 // ユーザ作成(ログインシェル指定あり) [root@hostname ~]# useradd -s /bin/csh username2 // ユーザリスト確認 [root@hostname ~]# cat /etc/passwd | grep username username1:x:1002:1002::/home/username1:/bin/bash username2:x:1003:1003::/home/username2:/bin/csh
useradd -u : ユーザID指定
-
-u
オプションを使用するとユーザIDを指定することができます。コマンド例// rootユーザ操作 // ユーザ作成(ユーザID指定) [root@hostname ~]# useradd -u 9999 username // ユーザ情報確認 [root@hostname ~]# id username uid=9999(username) gid=10000(username) groups=10000(username)
コメント