Linuxのユーザーとグループを管理する方法|useradd・usermod・groupaddコマンドの使い方


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > Linuxのユーザーとグループを管理する方法|useradd・usermod・groupaddコマンドの使い方
「新しくサーバーを構築したけれど、ユーザーやグループをどうやって管理すればいいか分からない」
「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 コマンドで行い、直接編集は禁止


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

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

/etc/passwdファイルは1行につき1ユーザーアカウントの情報が記述されており、項目はコロン「:」で区切られています。

フィールド 例(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:::

/etc/shadowのフィールド構成は以下の通りです。

フィールド 意味
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

/etc/groupのフィールド構成は以下の通りです。

フィールド 例(mail行: mail:x:12:mail,postfix) 意味
1番目 mail グループ名
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

例えば全ユーザーに共通の.vimrcや.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

注意:ユーザーを削除してもそのユーザーが作成したファイルは残ります。UIDで所有者が表示される(ユーザー名が解決できない)ため、削除後は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

重要:/etc/sudoersは絶対にvinanoで直接編集しないでください。構文エラーがあると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' のプライマリグループを削除することはできません

そのグループをプライマリグループとしているユーザーがいます。先にユーザーを削除するか、usermodでプライマリグループを変更してください。

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.

rootでログインし、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 ユーザー名
ユーザーとグループの管理は、Linuxサーバーのセキュリティの根幹です。特にusermod -aGusermod -Gの違い(追加vs置換)は実務でよく誤操作が起きるポイントです。visudoによるsudoers管理も合わせて習得しておきましょう。

Linuxのユーザー管理をより深く学びたい方は、無料のLinuxマニュアル(図解60P)もご活用ください。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。