useradd コマンド

目次

概要

useradd - ユーザーを追加する

コマンドライン

useradd [OPTIONS] LOGIN
useradd -D
useradd -D [OPTIONS]

対象バージョン

説明

useradd コマンドはユーザーを作成します。

# useradd yamada

RHEL ではデフォルトでホームディレクトリも作成されますが、Ubuntu ではデフォルトでは作成されないようです。デフォルト値に関わらず常に作成するには -m オプションを使用します。

# useradd -m yamada

ホームディレクトリ(-d)、ユーザID(-u)、グループ(-g)、シェル(-s)などを指定することもできます。詳細はオプションを参照してください。

# useradd -d /home2/yamada -u 1004 -g group1 -s /bin/zsh yamada

下記の様にしてパスワードを設定することもできます。

# useradd -p `openssl passwd -6 'mypasswd'` yamada

オプション

基本パラメーター

-b, --base-dir BASE_DIR
ホームディレクトリを作成するベースディレクトリを指定します。
# useradd -b /home2 yamada
-d, --home-dir HOME_DIR
ホームディレクトリを指定します。/etc/passwd の6カラム目に格納されます。
# useradd -d /home2/yamada yamada
-u, --uid UID
ユーザーIDを指定します。/etc/passwd の3カラム目に格納されます。
# useradd -u 1234 yamada
-g, --gid GROUP
主グループのグループ名またはグループIDを指定します。/etc/passwd の4カラム目に格納されます。
# useradd -g group1 yamada
-G, --groups GROUPS
追加グループリストを指定します。/etc/group に格納されます。
# useradd -G group2,group4,group4 yamada
-s, --shell SHELL
ユーザーが使用するシェルを指定します。/etc/passwd の7カラム目に格納されます。
# useradd -s /bin/zsh yamada
-c, --comment COMMENT
コメントを指定します。/etc/passwd の5カラム目に格納されます。
# useradd -c "Yamada Taro" yamada
-p, --password PASSWORD
パスワードを指定します。パスワードは暗号化した形式で指定します。/etc/shadow の第2フィールドに格納されます。
# useradd -p `openssl passwd -6 'mypasswd'` yamada
-f, --inactive INACTIVE
パスワードの期限切れ後の猶予日数を指定します。猶予日数のデフォルト値が設定されていて、特別に指定したくない場合は -f -1 としてください。/etc/shadow の第7フィールドに格納されます。
# useradd -f 30 yamada
-e, --expiredate EXPIRE_DATE
新アカウントの有効期限を指定します。有効期限が過ぎるとそのユーザーはログインできなくなります。有効期限のデフォルト値が設定されていて、特別に指定したくない場合は -e "" としてください。/etc/shadow の第8フィールドに格納されます。
# useradd -e "2025-12-31" yamada

ホームディレクトリ

-m, --create-home
ホームディレクトリを作成するモードでユーザーを作成します。/etc/login.defsCREATE_HOME の値が yes であれば -m を指定しなくてもホームディレクトリは作成されます。RHEL ではデフォルトで作成されるようです。
# useradd -m yamada
-M, --no-create-home
ホームディレクトリを作成しないモードでユーザーを作成します。/etc/login.defsCREATE_HOME の値が no であれば -M を指定しなくてもホームディレクトリは作成されません。Ubuntu ではデフォルトで作成されないようです。
# useradd -M yamada
-k, --skel SKEL_DIR
ホームディレクトリのスケルトン(ひな形)となるディレクトリ(通常は /etc/skel)を指定します。
# useradd -k /home/default yamada
--btrfs-subvolume-home
ホームディレクトリとして BTRFS サブボリュームを使用します。BTRFS は Sun Microsystems が開発した Copy on Write 機能などを実装したファイルシステムですが、RHEL 8 以降ではサポートされていません。

ユーザー名・ユーザーID

--badname
ユーザー名に使用できない文字を含んでいるなどの "悪い名前" をチェックしません。下記では空白文字を含むユーザーを作成しています。
# useradd --badname "yamada taro"
-o, --non-unique
ユーザーIDの重複を許可します。
# useradd --non-unique -u 1000 yamada
# useradd --non-unique -u 1000 taro

グループ

-U, --user-group
ユーザー名と同じ名前のグループを作成します。RHEL や Ubuntu ではデフォルトの動作です。
# useradd -U yamada
-N, --no-user-group
ユーザー名と同じ名前のグループを作成しません。グループは users(100) となります。
# useradd -N yamada

システムアカウント

-r, --system
システムアカウントを作成します。システムアカウントはデーモン実行などで使用されるユーザーで、ディストリビューションによって異なりますが、例えば下記のような差異があります。
  • UID_MIN(1000) 未満の UID が割り当てられる。
  • ホームディレクトリが作成されない。
  • ログインシェルが /etc/sbin/nologin になることもある
  • subuid/subgid が設定されない。(-F オプション参照)
# useradd --system myserver
-F, --add-subids-for-system
システムアカウントに対しても subuid/subgid を設定します。
# useradd --system --add-subids-for-system myserver
-l, --no-log-init
lastlogfaillog データベースに登録しないモードでユーザーを作成します。
# useradd --no-log-init myserver

デフォルト値

-D, --defaults
useradd コマンドのデフォルト値(-b, -s, -g, -e, -f の値) を表示または変更します。デフォルト値は /etc/default/useradd に格納されます。
# useradd -D                 # デフォルト値を表示
GROUP=100
GROUPS=
HOME=/home
  :
# useradd -D -b /home2       # ベースディレクトリのデフォルト値を変更
# useradd -D -e "2025-12-31" # 有効期限を変更
# useradd -D -e ""           # 有効期限を解除
# useradd -D -f 30           # 猶予日数を変更
# useradd -D -f -1           # 猶予日数を解除
-K, --key KEY=VALUE
/etc/login.defs のデフォルト値を変更してユーザーを作成します。下記の例ではホームディレクトリを作成しないモードでユーザーを作成しています。
# useradd --key CREATE_HOME=no yamada

仮想環境・拡張環境

-R, --root CHROOT_DIR
指定した chroot 仮想環境にユーザーを作成します。下記の例では /mnt/chroot/etc/passwd などにユーザーが作成されます。
# useradd --root /mnt/chroot yamada
-P, --prefix PREFIX_DIR
/etc ディレクトリのプレフィックスとなるディレクトリを指定します。下記の例では /mnt/chroot/etc/passwd などにユーザーを作成します。(※ --root との違いは...?)
# useradd --prefix /mnt/chroot yamada
--extrausers
/etc/passwd ではなく拡張ユーザーデータベース /var/lib/extrausers/passwd などにユーザーを作成します。システムにログインすることはできませんが、拡張ユーザーデータベースに対応したアプリケーションが通常の OS とは独立したユーザー空間として参照する場合に使用されます。Ubuntu 24.04 でサポートされていますが、RHEL 10 ではサポートされていません。
# mkdir /var/lib/extrausers
# useradd --extrausers yamada
# ls -l /var/lib/extrausers
total 24
-rw-r--r-- 1 root shadow 13 Jul 29 10:55 group
-r--r----- 1 root shadow  9 Jul 29 10:55 gshadow
-rw-r--r-- 1 root shadow 37 Jul 29 10:55 passwd
-r--r----- 1 root shadow 26 Jul 29 10:55 shadow
-rw-r--r-- 1 root shadow 18 Jul 29 10:55 subgid
-rw-r--r-- 1 root shadow 18 Jul 29 10:55 subuid

セキュリティ

-Z, --selinux-user SEUSER
SELinux ユーザーマッピングのユーザーを指定します。
# useradd -Z staff_u yamada
--selinux-range SERANGE
SELinux ユーザーマッピングのレンジを指定します。RHEL 10 ではサポートされていますが、Ubuntu 24.04 ではサポートされていません。
# useradd -Z staff_u --selinux-range s0-s0:c0.c1023 yamada

ヘルプ表示

-h, --help
ヘルプを表示して終了します。