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

Linuxコマンド(ユーザ管理)
2023-10-02
ヒーローイメージ

目次
  1. コマンド概要
  2. コマンド書式
  3. コマンド使用例

コマンド概要

  • useraddコマンドはシステムにユーザアカウントを新規作成するコマンドです。ユーザ作成には以下の項目を指定することができます。

    項目
    コメント
    ホームディレクトリ
    ユーザ有効期限
    パスワード有効期限
    所属グループ
    所属補助グループ
    ログインシェル
    Note

    ユーザアカウントを作成すると以下のファイルにユーザ情報が追加されます。

    /usr/passwd # ユーザリスト
    /etc/shadow # 暗号化されたパスワードリスト
    /etc/group  # グループと所属ユーザリスト
  • useraddコマンドは/etc/login.defsを設定ファイルとして読み込んで実行します。このファイルにはユーザに付加させる、ID、GID、パスワード暗号アルゴリズム、などの情報が記述されています。

  • ホームディレクトリ作成オプションを指定した場合、デフォルトでは/home配下に指定ユーザ名のディレクトリが作成され/etc/skel配下から初期設定ファイルをコピーします。

    Note
    RedHat系Linuxでオプションを指定してなくてもデフォルトでホームディレクトリを作成します。

コマンド書式

コマンド書式
useradd [オプション] ユーザ名
オプション 説明

-c 文字列
--comment 文字列

ユーザ作成時にコメント(=文字列)を付加する。

-D
--defaults

ユーザ作成時の標準設定を出力する。「/etc/default/useradd」の中身が出力される。

-d 文字列
--home-dir 文字列

ユーザのホームディレクトリを絶対パス(=文字列)で指定する。

-e YYYY-MM-DD
--expiredate YYYY-MM-DD

ユーザアカウントの有効期限日付(=YYYY-MM-DD)を指定する。

-f 日数
--inactive 日数

ユーザアカウントの有効期限が切れてから利用不能になるまでの日数を変更する(デフォルトは-1が設定されており有効期限は無限になっている)。有効期限が切れると、ユーザは新しいパスワードを設定する必要がある。

-g 文字列
--gid 文字列

ユーザに所属させるメイングループ(Primary Group)を「グループ名もしくはグループID」(=文字列)で指定する。

-G 文字列
--groups 文字列

ユーザに所属させる1つ以上のサブグループ(Secondary Group)を「グループ名もしくはグループID」(=文字列)で指定する。「,」区切りで複数グループ指定が可能。

-k 文字列
--skel 文字列

新ユーザーのホームディレクトリに初期ファイルや設定を展開する際にテンプレートとするファイルが格納されているディレクトリパス(=文字列)を指定する。

-m
--create-home

ホームディレクトリが存在しない場合は作成する。このオプションを指定しない場合はホームディレクトリは作成されない。 RedHat系Linuxでは指定なしでもホームディレクトリは作成される。

-r
--system

システムアカウントを作成する。

-s 文字列
--shell 文字列

ログインシェルを絶対パス(=文字列)で指定する。指定がなければシステムデフォルトのシェルが指定される。

-u 数値
--uid 数値

ユーザ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オプションを使用するとホームディレクトリが存在しない場合は作成します。

    Note
    RedHat系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)
    
    

コメント


Palette Codeなるべく丁寧にプログラミング関連技術を解説するサイト