「useradd、usermod、groupaddコマンドの使い分けが分からない」
そんな疑問を持つ方は多いです。Linuxはマルチユーザーシステムなので、ユーザーとグループを適切に管理することがセキュリティの基本です。
この記事では、useradd・usermod・userdel・groupadd・groupmod・groupdelコマンドの実践的な使い方を解説します。
/etc/passwd・/etc/shadow・/etc/groupの構造、sudoersへの追加、パスワードポリシーまで体系的にカバーします。
この記事のポイント
・useradd -m -s /bin/bash でホームディレクトリ付きユーザーを作成できる
・usermod -aG でグループを追加(-G 単体はサブグループを上書きするので危険)
・/etc/passwdは一般ユーザーも読める。パスワード実体は/etc/shadowにある
・sudoers追加は visudo コマンドで行い、直接編集は禁止
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Linuxのユーザー管理の仕組み:/etc/passwdと/etc/shadow
Linuxは複数のユーザーが同時に利用できるマルチユーザーシステムです。ユーザーの情報は/etc/passwdファイルに保存されています。/etc/passwdはプレーンテキストなので、catコマンドやlessコマンドで内容を参照できます。
[root@server ~]# cat /etc/passwd | head -5 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
| フィールド | 例(daemon行) | 意味 |
|---|---|---|
| 1番目 | daemon | ユーザー名。システム内で一意のアカウント名 |
| 2番目 | x | パスワード。現在はシャドウパスワードを使用するため「x」が入る |
| 3番目 | 2 | UID。ユーザーを識別する一意のID。rootは必ず0 |
| 4番目 | 2 | GID。プライマリグループのID。/etc/groupで定義される |
| 5番目 | daemon | GECOS。コメント欄。ユーザーのフルネームや説明 |
| 6番目 | /sbin | ホームディレクトリのパス |
| 7番目 | /sbin/nologin | デフォルトシェル。/sbin/nologinはログイン不可のシステムアカウント |
1. /etc/shadowファイル(パスワード情報の実体)
/etc/passwdは一般ユーザーでも読み出しができます。かつてはここに暗号化パスワードが保存されていましたが、時間をかけると解読される可能性があるため、現在は/etc/shadowファイルにパスワード情報を分離しています。/etc/shadowはrootのみが読み取れます。
# /etc/shadowのパーミッション確認 [root@server ~]# ls -l /etc/shadow ----------. 1 root root 1234 4月 7 09:00 2026 /etc/shadow # ユーザーtomohiroのエントリを確認 [root@server ~]# grep tomohiro /etc/shadow tomohiro:$6$6Lzm3/SK$n2hswFKcKSLrlsed95rimmTQkoKYm.../YE.nzYNEeXyAnpf1F66DDj/:19854:0:99999:7:::
| フィールド | 意味 |
|---|---|
| 1番目 | ユーザー名 |
| 2番目 | 暗号化パスワード($6$はSHA-512) |
| 3番目 | 最後にパスワードを変更した日(1970/1/1からの日数) |
| 4番目 | パスワード変更可能になるまでの最小日数 |
| 5番目 | パスワードの有効期限(日数)。99999は無期限 |
| 6番目 | パスワード期限切れ前の警告日数 |
| 7番目 | 期限切れ後もログイン可能な猶予日数 |
| 8番目 | アカウントの有効期限(1970/1/1からの日数) |
グループ管理の仕組み:/etc/group
グループの情報は/etc/groupファイルに保存されています。[root@server ~]# cat /etc/group | head -5 root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4:ec2-user
| フィールド | 例(mail行: mail:x:12:mail,postfix) | 意味 |
|---|---|---|
| 1番目 | グループ名 | |
| 2番目 | x | グループパスワード(現在は「x」が入る) |
| 3番目 | 12 | GID。グループを識別する一意のID |
| 4番目 | mail,postfix | グループメンバー。サブグループとして所属するユーザーの一覧 |
1. プライマリグループとサブグループの違い
ユーザーは複数のグループに所属できます。・プライマリグループ(基本グループ):ファイルやディレクトリを作成したときにデフォルトで適用されるグループ。/etc/passwdのGIDフィールドで定義される
・サブグループ(参加グループ):プライマリグループ以外に所属するグループ。/etc/groupのメンバーフィールドに追加される
useraddコマンド:新規ユーザーを作成する
ユーザーアカウントを作成するにはuseraddコマンドを使用します。# 書式 useradd [オプション] ユーザー名
1. 主なオプション
| オプション | 意味 |
|---|---|
| -m | ホームディレクトリを作成する(Rocky/RHEL9ではデフォルトで作成される) |
| -d パス | ホームディレクトリを指定する |
| -s パス | ログインシェルを指定する(例:/bin/bash) |
| -g グループ名/GID | プライマリグループを指定する |
| -G グループ名/GID | サブグループを指定する(カンマ区切りで複数指定可) |
| -c コメント | コメントフィールド(GECOSフィールド)を指定する |
| -u UID | UIDを指定する |
| -e 日付 | アカウントの有効期限を指定する(YYYY-MM-DD形式) |
2. 実行例
# ホームディレクトリ・シェル・コメントを指定してユーザーtomohiroを作成 [root@server ~]# useradd -c "Linux User" -d /home/tomohiro -s /bin/bash tomohiro # 作成確認 [root@server ~]# id tomohiro uid=1001(tomohiro) gid=1001(tomohiro) groups=1001(tomohiro) # パスワードを設定(作成直後はパスワードなしでログイン不可) [root@server ~]# passwd tomohiro ユーザー tomohiro のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。
3. /etc/skelディレクトリ(ホームディレクトリの雛形)
ユーザーアカウントを作成するとホームディレクトリも同時に作成されます。その際、/etc/skelディレクトリ内のファイルが自動的にホームディレクトリにコピーされます。[root@server ~]# ls -la /etc/skel/ 合計 20 drwxr-xr-x. 2 root root 4096 4月 1 10:00 2026 . drwxr-xr-x. 80 root root 4096 4月 1 10:00 2026 .. -rw-r--r--. 1 root root 18 1月 1 00:00 2024 .bash_logout -rw-r--r--. 1 root root 176 1月 1 00:00 2024 .bash_profile -rw-r--r--. 1 root root 124 1月 1 00:00 2024 .bashrc
usermodコマンド:既存ユーザーを変更する
usermodコマンドは既存のユーザーアカウントを変更します。1. 主なオプション
| オプション | 意味 |
|---|---|
| -c コメント | コメントフィールドを変更する |
| -d パス | ホームディレクトリを変更する |
| -s パス | ログインシェルを変更する |
| -g グループ名/GID | プライマリグループを変更する |
| -G グループ名/GID | サブグループを置き換える(既存のサブグループが消える) |
| -aG グループ名/GID | サブグループを追加する(-aと-Gを組み合わせる) |
| -L | パスワードをロックして一時的に無効化する |
| -U | パスワードのロックを解除する |
| -e 日付 | アカウントの有効期限を変更する(YYYY-MM-DD形式) |
2. -G と -aG の違い(重要)
-Gオプションは既存のサブグループを上書きします。既存のサブグループを保持したまま追加したい場合は必ず-aG を使います。# 現在の所属グループを確認 [root@server ~]# id tomohiro uid=1001(tomohiro) gid=1001(tomohiro) groups=1001(tomohiro),100(users) # -Gだけで指定するとサブグループが置き換わる(既存のusersグループが消える) [root@server ~]# usermod -G wheel tomohiro [root@server ~]# id tomohiro uid=1001(tomohiro) gid=1001(tomohiro) groups=1001(tomohiro),10(wheel) # -aGでサブグループを追加する(wheelを保持したままdockerを追加) [root@server ~]# usermod -aG docker tomohiro [root@server ~]# id tomohiro uid=1001(tomohiro) gid=1001(tomohiro) groups=1001(tomohiro),10(wheel),996(docker)
3. アカウントを一時的にロックする
長期休暇などでアカウントを使用しなくなる場合、削除せずに-Lオプションでロックをかけることができます。# アカウントをロック(パスワード先頭に!が付加される) [root@server ~]# usermod -L tomohiro # ロックを解除する [root@server ~]# usermod -U tomohiro
userdelコマンド:ユーザーを削除する
userdelコマンドは既存のユーザーアカウントを削除します。# 書式 userdel [オプション] ユーザー名
| オプション | 意味 |
|---|---|
| -r | ホームディレクトリとメールスプールも同時に削除する |
| -f | ユーザーがログイン中でも強制削除する(危険) |
# ユーザーtomohiroをホームディレクトリごと削除 [root@server ~]# userdel -r tomohiro # 削除確認 [root@server ~]# id tomohiro id: 'tomohiro': no such user
find / -uid [旧UID]で孤立ファイルを探して対処してください。passwdコマンド:パスワードを管理する
passwdコマンドはパスワードを変更します。root以外は自分のパスワードのみ変更できます。# rootがユーザーtomohiroのパスワードを変更 [root@server ~]# passwd tomohiro ユーザー tomohiro のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。 # パスワードをロックする(/etc/shadowの2フィールド目に!が付加される) [root@server ~]# passwd -l tomohiro ユーザー tomohiro 用のパスワードをロック。 passwd: 成功 # ロックを解除する [root@server ~]# passwd -u tomohiro ユーザー tomohiro 用のパスワードをロック解除。 passwd: 成功
| オプション | 意味 |
|---|---|
| -l | パスワードをロックして一時的に無効化する |
| -u | パスワードのロックを解除する |
| -e | 次回ログイン時に強制的にパスワード変更させる |
| -d | パスワードを削除する(パスワードなしでログイン可能になる) |
| -n 日数 | パスワード変更できない最小日数を設定する |
| -x 日数 | パスワードの有効期限を設定する |
groupadd・groupmod・groupdelコマンド:グループを管理する
1. groupadd:グループを新規作成する
# 書式 groupadd [オプション] グループ名 # 新規グループ「developers」を作成 [root@server ~]# groupadd developers # GIDを指定してグループを作成 [root@server ~]# groupadd -g 2000 operators # 作成確認 [root@server ~]# grep developers /etc/group developers:x:1002:
| オプション | 意味 |
|---|---|
| -g GID | GIDを指定する |
| -r | システムグループとして作成する(GIDが通常範囲より小さくなる) |
2. groupmod:グループを変更する
# グループ名をdevelopersからdevteamに変更 [root@server ~]# groupmod -n devteam developers # GIDを変更する [root@server ~]# groupmod -g 2001 devteam
3. groupdel:グループを削除する
# グループdevteamを削除 [root@server ~]# groupdel devteam
sudoersへの追加:管理者権限を付与する
特定のユーザーにsudo権限を付与するには2つの方法があります。1. wheelグループに追加する(推奨)
RHEL9/Rocky Linux9ではwheelグループのメンバーがsudoを実行できます。# ユーザーtomohiroをwheelグループに追加 [root@server ~]# usermod -aG wheel tomohiro # 確認 [root@server ~]# id tomohiro uid=1001(tomohiro) gid=1001(tomohiro) groups=1001(tomohiro),10(wheel) # sudo動作確認(tomohiroでログイン後) [tomohiro@server ~]$ sudo whoami [sudo] tomohiro のパスワード: root
2. visudoでsudoersファイルを直接編集する
個別のユーザーに細かくsudo権限を設定したい場合はvisudoコマンドで編集します。# visudoを実行(/etc/sudoersを安全に編集できる) [root@server ~]# visudo # /etc/sudoers内での記述例 # ユーザーtomohiroが全てのコマンドをsudoで実行できるようにする tomohiro ALL=(ALL) ALL # パスワードなしでsudoを実行させる場合 tomohiro ALL=(ALL) NOPASSWD: ALL # 特定のコマンドのみ許可する場合 tomohiro ALL=(ALL) /usr/bin/systemctl restart httpd
viやnanoで直接編集しないでください。構文エラーがあるとsudoが完全に使えなくなります。visudoは保存時に構文チェックを行うため安全です。パスワードポリシーの設定(RHEL9/Rocky9)
1. chageコマンドでパスワード有効期限を設定する
chageコマンドはパスワードの有効期限や変更ポリシーを設定します。# ユーザーtomohiroのパスワードポリシーを確認 [root@server ~]# chage -l tomohiro 最終パスワード変更日 : 4月 07, 2026 パスワード有効期限 : なし パスワード無効 : なし アカウント有効期限 : なし パスワードが変更できるようになるまでの最小日数 : 0 パスワードを変更しなければならない最大日数 : 99999 パスワード期限が切れる前に警告される日数 : 7 # パスワードを90日で期限切れに設定 [root@server ~]# chage -M 90 tomohiro # パスワード変更後の最小待機日数を1日に設定 [root@server ~]# chage -m 1 tomohiro # アカウント自体の有効期限を2026-12-31に設定 [root@server ~]# chage -E 2026-12-31 tomohiro # 次回ログイン時にパスワード変更を強制する [root@server ~]# chage -d 0 tomohiro
| オプション | 意味 |
|---|---|
chage -l ユーザー名 |
現在のパスワードポリシーを確認する |
chage -M 日数 ユーザー名 |
パスワードの有効期限(最大日数)を設定する |
chage -m 日数 ユーザー名 |
パスワード変更できない最小日数を設定する |
chage -W 日数 ユーザー名 |
期限切れ前の警告日数を設定する |
chage -E 日付 ユーザー名 |
アカウントの有効期限を設定する(YYYY-MM-DD) |
chage -d 0 ユーザー名 |
次回ログイン時にパスワード変更を強制する |
トラブルシュート:よくあるエラーと対処法
1. 「useradd: user 'xxx' already exists」
[root@server ~]# useradd tomohiro useradd: ユーザー 'tomohiro' は既に存在します
id tomohiroで確認してください。変更が必要な場合はusermodを使います。2. 「groupdel: cannot remove the primary group of user 'xxx'」
[root@server ~]# groupdel tomohiro groupdel: ユーザー 'tomohiro' のプライマリグループを削除することはできません
3. sudo実行時に「is not in the sudoers file」
[tomohiro@server ~]$ sudo whoami [sudo] tomohiro のパスワード: tomohiro is not in the sudoers file. This incident will be reported.
usermod -aG wheel tomohiroでwheelグループに追加してください。変更後は一度ログアウトして再ログインしないとグループが反映されません。本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| ユーザーを新規作成する | useradd -m -s /bin/bash ユーザー名 |
| パスワードを設定する | passwd ユーザー名 |
| ユーザーのシェルを変更する | usermod -s /bin/bash ユーザー名 |
| サブグループを追加する | usermod -aG グループ名 ユーザー名 |
| アカウントを一時ロックする | usermod -L ユーザー名 |
| ユーザーをホームごと削除する | userdel -r ユーザー名 |
| グループを新規作成する | groupadd グループ名 |
| グループ名を変更する | groupmod -n 新グループ名 旧グループ名 |
| グループを削除する | groupdel グループ名 |
| sudo権限を付与する | usermod -aG wheel ユーザー名 |
| パスワード有効期限を設定する | chage -M 90 ユーザー名 |
| 現在のパスワードポリシーを確認する | chage -l ユーザー名 |
usermod -aGとusermod -Gの違い(追加vs置換)は実務でよく誤操作が起きるポイントです。visudoによるsudoers管理も合わせて習得しておきましょう。Linuxのユーザー管理をより深く学びたい方は、無料のLinuxマニュアル(図解60P)もご活用ください。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

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