useradd コマンドは、Linux システムに新しいユーザーアカウントを作成するための低レベルコマンドです。システム管理者が開発者・サービス専用アカウントを追加する際に利用されます。このページでは、基本的な使い方から adduser との違い、ホームディレクトリ作成、パスワード設定、sudo 権限付与まで順を追って解説します。
useraddコマンドとは
useradd はLinuxの低レベルユーティリティで、/etc/passwd・/etc/shadow・/etc/group などのシステムファイルを直接操作してユーザーを作成します。オプションを明示的に指定する必要があるため、スクリプトや自動化に適しています。
useradd と adduser の違い
Linuxには useradd と adduser の2つのユーザー作成コマンドがあります。
| コマンド | 種類 | 特徴 |
|---|---|---|
useradd | 低レベル(C言語製) | オプション指定が必要。スクリプト・自動化向け。すべてのLinuxディストリビューションで利用可能。 |
adduser | 高レベル(Perlスクリプト) | 対話的に設定を入力できる。Debian・Ubuntu系のみ標準搭載。デフォルトでホームディレクトリを作成する。 |
UbuntuやDebianでは対話的に操作できる adduser が便利です。一方、CentOS・RHEL・ArchLinuxなどでは useradd のみ標準搭載されています。スクリプトや自動化には useradd を使うのが確実です。
構文(Syntax)
useradd [オプション] USERNAME
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-m | ホームディレクトリを作成 | sudo useradd -m alice |
-d DIR | ホームディレクトリのパスを指定 | sudo useradd -m -d /home/alice alice |
-s SHELL | ログインシェルを指定 | sudo useradd -m -s /bin/bash alice |
-g GROUP | プライマリグループを指定 | sudo useradd -m -g developers alice |
-G GROUPS | 補助グループを指定(カンマ区切り) | sudo useradd -m -G sudo,staff alice |
-c COMMENT | コメント(GECOS フィールド)を設定 | sudo useradd -m -c "Alice Dev Account" alice |
-u UID | ユーザーIDを指定 | sudo useradd -m -u 1500 alice |
-e DATE | アカウントの有効期限を設定(YYYY-MM-DD) | sudo useradd -m -e 2025-12-31 alice |
-r | システムユーザーとして作成(サービス用) | sudo useradd -r nginx |
基本の使い方
基本のユーザー作成(-m でホームディレクトリも作成)
sudo useradd -m username
-m オプションを付けると /home/username が自動的に作成されます。-m を省略するとホームディレクトリが作成されないため、通常のログインユーザーを作成する際は必ず付けてください。
シェルを指定してユーザーを作成(-s)
sudo useradd -m -s /bin/bash username
-s オプションでログインシェルを指定します。指定しない場合はシステムのデフォルトシェル(/bin/sh など)が設定されます。/bin/bash や /bin/zsh など、利用可能なシェルは /etc/shells で確認できます。
プライマリグループを指定して作成(-g)
sudo useradd -m -g groupname username
-g オプションでプライマリグループを指定します。指定したグループはあらかじめ存在している必要があります。省略した場合はユーザー名と同名のグループが自動作成されます。
補助グループに追加して作成(-G)
sudo useradd -m -G sudo username
-G オプションで補助グループ(サブグループ)を指定します。複数指定する場合はカンマ区切りで -G sudo,docker のように書きます。
パスワードを設定する
useradd コマンドだけではパスワードが設定されず、ユーザーはパスワード認証でログインできません。ユーザー作成後に必ず passwd コマンドでパスワードを設定してください。
sudo passwd username
実行すると新しいパスワードの入力を2回求められます。
New password:
Retype new password:
passwd: password updated successfully
sudo権限を付与する
作成したユーザーに管理者権限(sudo)を付与するには、sudo グループ(Debian/Ubuntu系)または wheel グループ(RHEL/CentOS系)に追加します。
ユーザー作成時に sudo グループへ追加
# Ubuntu/Debian系
sudo useradd -m -s /bin/bash -G sudo username
# RHEL/CentOS系
sudo useradd -m -s /bin/bash -G wheel username
既存ユーザーに sudo 権限を後から付与
すでに作成したユーザーに後から sudo 権限を付与するには usermod を使います。
# Ubuntu/Debian系
sudo usermod -aG sudo username
# RHEL/CentOS系
sudo usermod -aG wheel username
作成したユーザーを確認する
id コマンドで確認
id username
出力例:
uid=1001(username) gid=1001(username) groups=1001(username),27(sudo)
UID・GID・所属グループをまとめて確認できます。
getent passwd で確認
getent passwd username
出力例:
username:x:1001:1001::/home/username:/bin/bash
コロン区切りで「ユーザー名:パスワード(x):UID:GID:コメント:ホームディレクトリ:シェル」が確認できます。
/etc/passwd を直接確認
grep username /etc/passwd
/etc/passwd にユーザー情報が追記されているかを確認できます。
ユーザー作成時のデフォルト設定
/etc/default/useradd
useradd のデフォルト動作(ホームディレクトリの親パス、デフォルトシェル、アカウント有効期限など)は /etc/default/useradd で管理されています。
cat /etc/default/useradd
出力例:
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
デフォルトのシェルを変更したい場合はこのファイルの SHELL= を編集します。
/etc/skel
-m でホームディレクトリを作成する際、/etc/skel/ の内容がそのままコピーされます。新規ユーザー全員に共通の設定ファイル(.bashrc、.profile など)を配置しておく場所です。
ls -a /etc/skel
ユーザーを削除する
ユーザーを削除するには userdel コマンドを使います。
ユーザーのみ削除(ホームディレクトリは残す)
sudo userdel username
ホームディレクトリごと削除(-r)
sudo userdel -r username
-r を付けるとホームディレクトリとメールスプールも一緒に削除されます。削除前に重要なファイルをバックアップしてください。
よくあるエラーと対処法
Permission denied
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
原因: useradd を sudo なしで実行しています。
対処: sudo useradd ... と sudo を付けて実行してください。
useradd: user ‘username’ already exists
useradd: user 'alice' already exists
原因: 同名のユーザーがすでに存在しています。
対処: id alice で確認し、既存ユーザーを使うか別名で作成してください。
ホームディレクトリが作成されない
原因: -m オプションを付けずに実行しています。
対処: sudo useradd -m username と -m を付けてください。すでに作成済みの場合は sudo mkhomedir_helper username または手動で sudo mkdir /home/username && sudo chown username:username /home/username で作成できます。
ログインシェルが意図したものにならない
原因: -s オプションを省略したか、/etc/default/useradd のデフォルトシェルが別のシェルに設定されています。
対処: sudo useradd -m -s /bin/bash username と明示的に指定するか、作成後に sudo usermod -s /bin/bash username で変更できます。
よくある疑問
useradd と adduser はどちらを使うべきか
Ubuntu/Debian環境で手動操作する場合は adduser が手軽です。スクリプトや自動化、またはCentOS/RHELなどすべてのLinux環境で動作させたい場合は useradd を使います。
-m を付けないとどうなるか
/home/username が作成されません。ユーザーはログインできますが、ホームディレクトリがない状態になります。通常のログインユーザーには -m を付けることを推奨します。
パスワードなしユーザーは作れるか
作れます。useradd 直後はパスワードが未設定(ロック状態)です。パスワードなしでSSH公開鍵認証のみを使う場合などはそのままで問題ありません。パスワード認証が必要な場合は sudo passwd username で設定してください。
sudo できるユーザーを作るにはどうするか
ユーザー作成時に -G sudo(Ubuntu/Debian)または -G wheel(RHEL/CentOS)を付けます。
sudo useradd -m -s /bin/bash -G sudo username
システムユーザーと通常ユーザーの違い
システムユーザーは -r オプションで作成し、UID が 1000 未満(システムによって異なる)になります。nginxやpostfixなどのサービス実行用アカウントで、ホームディレクトリやログインシェルを持たないのが一般的です。通常ユーザーは UID 1000 以上で、ログインして操作する人間のアカウントです。
実行例まとめ
通常ユーザーを作成してパスワードを設定する
sudo useradd -m -s /bin/bash alice
sudo passwd alice
sudo 権限付きユーザーを作成する
sudo useradd -m -s /bin/bash -G sudo alice
sudo passwd alice
サービス用システムユーザーを作成する
sudo useradd -r -s /usr/sbin/nologin myservice
関連コマンド
usermod: 既存ユーザーの属性を変更userdel: ユーザーを削除passwd: ユーザーのパスワードを設定または変更groupadd: グループを作成groups: ユーザーが所属するグループを確認
参考
- manページ: man7.org useradd(8)
- Shadow-utils プロジェクト: https://github.com/shadow-maint/shadow

コメント