「useraddで追加したはずなのに、ログインできない」
サーバー管理の基本であるユーザー管理は、手順を間違えるとセキュリティ事故に直結します。特に、ユーザーを追加した直後にパスワードを設定し忘れたり、不要な権限を与えてしまったりするトラブルは、現場で非常に多く見かけます。
この記事では、Linuxでユーザーを追加する
useradd コマンド の実践的な使い方を解説します。基本的なユーザー追加から、ホームディレクトリやシェルの指定、グループの設定、sudo権限の付与、アカウントのロック/アンロック、グループ管理コマンド(groupadd・groupmod・groupdel)まで、実務で必要なノウハウをすべて網羅しました。
※
useradd コマンドは root ユーザー、または sudo を付けた状態で実行する必要があります。一般ユーザーで実行すると「Permission denied」エラーになります。この記事のポイント
・useradd でユーザーを追加した後、必ず passwd でパスワードを設定しないとログインできない
・-m でホームディレクトリ作成、-s でログインシェル指定(/sbin/nologin でログイン禁止)
・usermod -aG wheel で sudo 権限を付与(-a を忘れると既存グループが全削除される)
・usermod -L でアカウントをロック、-U でアンロック(退職者対応に必須)
・サービス専用ユーザーは useradd -s /sbin/nologin -M で作成するのがセキュリティの鉄則
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
useraddコマンドの基本構文
useradd は、Linuxシステムに新しいユーザーアカウントを追加するコマンドです。# 基本書式 # useradd [オプション] ユーザー名
・1. useradd でユーザーを作成する
・2. passwd でパスワードを設定する
・3. 必要に応じてグループや権限を設定する
この流れを押さえたうえで、各ステップの詳細を見ていきましょう。
ユーザーを追加してパスワードを設定する(基本手順)
1. useraddでユーザーを作成する
もっとも基本的な使い方は、ユーザー名だけを指定する方法です。# ユーザー tanaka を追加する(ホームディレクトリ・bash シェルを明示) # useradd -m -s /bin/bash tanaka # ユーザーが作成されたか確認 # id tanaka uid=1001(tanaka) gid=1001(tanaka) groups=1001(tanaka)
id コマンドで UID・GID・所属グループが表示されれば、ユーザーは正しく作成されています。この時点ではまだパスワードが未設定のため、ログインはできません。
2. passwdでパスワードを設定する
ユーザーを追加したら、必ずpasswd コマンドでパスワードを設定してください。これを忘れると、そのユーザーでログインすることができません。# tanaka ユーザーのパスワードを設定する # passwd tanaka Changing password for user tanaka. New password: (パスワードを入力) Retype new password: (再入力) passwd: all authentication tokens updated successfully.
3. ユーザーが正しく作成されたか確認する
ユーザーの情報は/etc/passwd ファイルに記録されます。grep コマンドで確認しましょう。# /etc/passwd でユーザー情報を確認する # grep tanaka /etc/passwd tanaka:x:1001:1001::/home/tanaka:/bin/bash
・tanaka:ユーザー名
・x:パスワード(暗号化パスワードは /etc/shadow に格納)
・1001:UID(ユーザーID)
・1001:GID(プライマリグループID)
・(空欄):コメント(GECOS フィールド)
・/home/tanaka:ホームディレクトリ
・/bin/bash:ログインシェル
パスワードの暗号化情報は
/etc/shadow に保存されています。確認するには root 権限が必要です。# /etc/shadow でパスワードハッシュを確認する # grep tanaka /etc/shadow tanaka:$6$xxxxxxxx...:19789:0:99999:7:::
!! や ! と表示される場合は、パスワードが未設定またはロックされている状態です。主要オプションの解説
1. -m(ホームディレクトリを作成する)
useradd でユーザーを追加した際、ホームディレクトリが自動で作成されるかどうかは、ディストリビューション(Linuxの種類)によって異なります。・RHEL / CentOS / AlmaLinux / Rocky Linux:デフォルトでホームディレクトリが作成される(/etc/login.defs の CREATE_HOME が yes)
・Ubuntu / Debian:
-m オプションを付けないとホームディレクトリが作成されない確実にホームディレクトリを作成したい場合は、
-m オプションを明示的に指定するのが安全です。# ホームディレクトリを明示的に作成する # useradd -m tanaka
2. -d(ホームディレクトリのパスを指定する)
デフォルトでは/home/ユーザー名 にホームディレクトリが作られますが、-d オプションで任意のパスを指定できます。# ホームディレクトリを /opt/users/tanaka に指定する # useradd -m -d /opt/users/tanaka tanaka
3. -s(ログインシェルを指定する)
ログイン時に使用するシェルを指定します。指定しない場合は、/etc/default/useradd に定義されたデフォルトシェル(通常は /bin/bash)が適用されます。# ログインシェルを /bin/bash に指定する # useradd -s /bin/bash tanaka # サービス専用ユーザー(ログイン不可)の場合 # useradd -s /sbin/nologin appuser
/sbin/nologin の活用については、後述の「サービス専用ユーザー」セクションで詳しく説明します。4. -g(プライマリグループを指定する)
ユーザーのプライマリグループ(メイングループ)を指定します。指定しない場合は、ユーザー名と同じ名前のグループが自動で作られます。# プライマリグループを "developers" に指定する # useradd -g developers tanaka
groupadd コマンドで作成しておく必要があります。5. -G(セカンダリグループを指定する)
プライマリグループとは別に、追加のグループ(セカンダリグループ)に所属させる場合は-G オプションを使います。複数のグループを指定する場合はカンマ(,)で区切ります。# セカンダリグループに "wheel" と "developers" を指定する # useradd -G wheel,developers tanaka
6. -u(UIDを指定する)
ユーザーIDを明示的に指定します。複数サーバー間でUID/GIDを統一したい場合(NFSや共有ストレージ環境)に使います。# UID を 1500 に指定する # useradd -u 1500 tanaka # 現在使用中の UID 一覧を確認してから指定するとよい # awk -F: '$3 >= 1000 {print $1, $3}' /etc/passwd
7. -c(コメントを指定する)
-c オプションで、ユーザーのフルネームや説明を設定できます。この情報は /etc/passwd の5番目のフィールド(GECOSフィールド)に保存されます。# コメント(フルネーム)を設定する # useradd -c "Tanaka Taro" tanaka
8. -e(アカウントの有効期限を設定する)
-e オプションで、アカウントが無効になる日付を YYYY-MM-DD 形式で指定できます。期間限定の外部委託スタッフのアカウントを作る際に便利です。# アカウントの有効期限を 2026-12-31 に設定する # useradd -e 2026-12-31 tanaka # 有効期限の確認 # chage -l tanaka | grep "Account expires" Account expires : Dec 31, 2026
9. -r(システムアカウントとして作成する)
-r オプションを付けると、UID が 1000 未満のシステムアカウントとして作成されます。サービス用の専用アカウントで、ホームディレクトリは作成されません。# システムアカウントとして作成する(UID が自動で 1000 未満に割り当てられる) # useradd -r nginx
10. useradd -D(デフォルト設定を確認する)
useradd -D でオプション未指定時のデフォルト値を確認できます。環境ごとに異なることがあるため、作業前に確認しておくと安全です。# デフォルト設定を確認する # useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=no
/etc/skel の役割
useradd でホームディレクトリが作成される際、/etc/skel(スケルトンディレクトリ)の中身がそのまま新しいユーザーのホームディレクトリにコピーされます。# /etc/skel の中身を確認する # ls -la /etc/skel/ total 24 drwxr-xr-x 2 root root 4096 Jan 1 00:00 . drwxr-xr-x 76 root root 4096 Jan 1 00:00 .. -rw-r--r-- 1 root root 18 Jan 1 00:00 .bash_logout -rw-r--r-- 1 root root 141 Jan 1 00:00 .bash_profile -rw-r--r-- 1 root root 312 Jan 1 00:00 .bashrc
.vimrc やプロキシ設定)を配布したい場合は、あらかじめ /etc/skel に配置しておくと、新規ユーザー作成時に自動でコピーされるため便利です。sudo権限の付与(wheelグループへの追加)
一般ユーザーにsudo コマンドの実行権限を与えるには、そのユーザーを wheel グループに追加します。RHEL系(CentOS / AlmaLinux / Rocky Linux)のデフォルト設定では、wheel グループに所属するユーザーが sudo を使用できるようになっています。ユーザー作成時に
-G wheel を指定するのが最も簡単です。# ユーザー作成時に wheel グループへ追加する # useradd -G wheel tanaka # passwd tanaka
usermod コマンドの -aG オプションを使います。# 既存ユーザーを wheel グループに追加する(-a を忘れないこと) # usermod -aG wheel tanaka # 確認 # id tanaka uid=1001(tanaka) gid=1001(tanaka) groups=1001(tanaka),10(wheel)
-a(append)を付けずに usermod -G wheel tanaka と実行すると、tanaka ユーザーのセカンダリグループが wheel だけに「上書き」されてしまいます。既存のグループ所属がすべて消えるため、-a は必ず付けてください。sudo が正しく使えるか確認するには、以下のように実行します。
# tanaka ユーザーに切り替えて sudo を確認する # su - tanaka $ sudo whoami root
root と表示されれば、sudo 権限は正常に付与されています。※Ubuntu / Debian では
wheel ではなく sudo グループを使用します。usermod -aG sudo tanaka と指定してください。usermodでユーザー情報を変更する
既に作成済みのユーザーの情報を変更するには、usermod コマンドを使います。オプションの指定方法は useradd とほぼ同じです。# ログインシェルを変更する # usermod -s /bin/zsh tanaka # コメント(フルネーム)を変更する # usermod -c "Tanaka Jiro" tanaka # ホームディレクトリを変更する(-m で中身も移動) # usermod -d /home/tanaka_new -m tanaka # セカンダリグループを追加する(-a 必須) # usermod -aG docker tanaka
アカウントをロック・アンロックする
退職者対応や一時停止など、アカウントを無効化したい場合は-L(Lock)オプションを使います。# アカウントをロック(/etc/shadow のパスワードフィールドに ! を付加) # usermod -L tanaka # または passwd コマンドでも可 # passwd -l tanaka # ロック状態を確認 # passwd -S tanaka tanaka LK 2026-05-29 0 99999 7 -1 (Password locked.) # アンロック # usermod -U tanaka # または # passwd -u tanaka
-s /sbin/nologin との組み合わせが必要です。# 完全なログイン禁止(公開鍵認証も含めて遮断) # usermod -L -s /sbin/nologin tanaka
パスワードの有効期限を確認する
chage -l コマンドで、パスワードのエージング情報をまとめて確認できます。# パスワード有効期限・アカウント情報を確認する # chage -l tanaka Last password change : May 29, 2026 Password expires : never Account expires : Dec 31, 2026
userdelでユーザーを削除する
不要になったユーザーアカウントは、userdel コマンドで削除します。# ユーザーだけを削除する(ホームディレクトリは残る) # userdel tanaka # ユーザーとホームディレクトリを一緒に削除する # userdel -r tanaka
-r オプションを付けると、ホームディレクトリとメールスプール(/var/spool/mail/ユーザー名)も同時に削除されます。削除前に、そのユーザーのホームディレクトリに重要なデータがないか必ず確認してください。-r を付けずに削除した場合、ホームディレクトリは残ったままになります。所有者のいないファイル(UIDだけが表示される状態)がサーバー上に残り続けるため、不要であれば手動で削除してください。削除前には、以下の確認も行う習慣をつけてください。
# そのユーザーが所有するファイルを確認 # find /home /var /srv -user tanaka 2>/dev/null # ログイン中のセッションが残っていないか確認 # who | grep tanaka # w | grep tanaka
グループを管理するコマンド(groupadd・groupmod・groupdel)
ユーザー管理と合わせてグループ管理も押さえておきましょう。# グループを作成する # groupadd developers # グループ名を変更する # groupmod -n dev developers # グループを削除する(先にユーザーを外してから) # groupdel dev # グループ一覧を確認する # grep developers /etc/group developers:x:1002:tanaka,yamada # ユーザーが所属するグループを確認する # groups tanaka tanaka : tanaka wheel developers
【重要】/sbin/nologin でサービス専用ユーザーを作るセキュリティTips
Webサーバー(Apache / Nginx)やデータベース(MySQL / PostgreSQL)などのサービスは、専用のユーザーで実行するのがセキュリティ上の鉄則です。このようなサービス専用ユーザーは、人間がログインする必要がないため、ログインシェルに/sbin/nologin を指定してログインを禁止します。# サービス専用ユーザーを作成する(ログイン禁止) # useradd -s /sbin/nologin -M appuser
-M オプションは、ホームディレクトリを作成しないという指定です。サービス専用ユーザーにはホームディレクトリが不要なケースがほとんどです。/sbin/nologin が設定されたユーザーでログインしようとすると、以下のようにはじかれます。# nologin ユーザーでログインを試みた場合 # su - appuser This account is currently not available.
トラブルシュート:よくあるエラーと対処法
1. 「useradd: user 'xxx' already exists」エラー
既に同じ名前のユーザーが存在する場合に表示されます。# useradd tanaka useradd: user 'tanaka' already exists
・ユーザーの存在を確認する:
id tanaka または grep tanaka /etc/passwd で確認する・別名にする:用途が異なる場合は、別のユーザー名で作成する
・削除して再作成する:不要なユーザーであれば
userdel tanaka で削除してから再度 useradd を実行する2. ホームディレクトリが作成されない場合
useradd を実行したのにホームディレクトリが存在しない場合は、以下を確認してください。・
-m オプションを付けたか:Ubuntu / Debian では -m を省略するとホームディレクトリが作成されない・
/etc/login.defs の設定を確認する:CREATE_HOME が yes に設定されているか確認する# CREATE_HOME の設定を確認する # grep CREATE_HOME /etc/login.defs CREATE_HOME yes
yes 以外の値になっている場合は、-m オプションを明示的に付けるか、この設定を yes に変更してください。既にユーザーは作成済みだがホームディレクトリだけがない場合は、手動で作成して権限を設定します。
# ホームディレクトリを手動で作成する # mkdir /home/tanaka # cp -a /etc/skel/. /home/tanaka/ # chown -R tanaka:tanaka /home/tanaka # chmod 700 /home/tanaka
3. UID の重複エラー
-u で UID を明示指定した際、既存の UID と重複するとエラーになります。# useradd -u 1001 yamada useradd: UID 1001 is not unique # 現在使用中の UID 一覧を確認する # awk -F: '$3 >= 1000 {print $1, $3}' /etc/passwd # 重複しない UID を確認してから指定する # useradd -u 1005 yamada
本記事のまとめ(useraddオプション早見表)
| やりたいこと | コマンド |
|---|---|
| ホームディレクトリ付きでユーザーを追加する | useradd -m -s /bin/bash ユーザー名 |
| パスワードを設定する | passwd ユーザー名 |
| ホームディレクトリのパスを指定する | useradd -m -d /パス ユーザー名 |
| ログインシェルを指定する | useradd -s /bin/bash ユーザー名 |
| プライマリグループを指定する | useradd -g グループ名 ユーザー名 |
| セカンダリグループを指定する | useradd -G グループ名 ユーザー名 |
| UID を明示指定する | useradd -u 1500 ユーザー名 |
| コメント(フルネーム)を指定する | useradd -c "コメント" ユーザー名 |
| 有効期限を設定する | useradd -e YYYY-MM-DD ユーザー名 |
| ログイン不可ユーザーを作成する | useradd -s /sbin/nologin ユーザー名 |
| システムアカウントとして作成する | useradd -r ユーザー名 |
| sudo権限を付与する(RHEL系) | useradd -G wheel ユーザー名 |
| 既存ユーザーにグループを追加する | usermod -aG グループ名 ユーザー名 |
| アカウントをロックする | usermod -L ユーザー名 |
| アカウントをアンロックする | usermod -U ユーザー名 |
| ユーザーを削除する(ホームも削除) | userdel -r ユーザー名 |
| UID・グループ情報を確認する | id ユーザー名 |
| パスワード有効期限を確認する | chage -l ユーザー名 |
| グループを作成する | groupadd グループ名 |
| グループを削除する | groupdel グループ名 |
useraddの失敗でユーザー追加後にトラブルが起きたことはありませんか?
コマンドの使い方を一つひとつ覚えていくのは時間がかかります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:passwdコマンドでLinuxのパスワードを変更する方法|ロック・有効期限の設定も
- 前のページへ:viewコマンドでファイルを読み取り専用で開く方法|vim -Rとの違いと安全な閲覧手順
- この記事の属するカテゴリ:Linuxtipsへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます