システム管理 中級

Linuxのユーザーとグループ管理

useradd・usermod・groupadd などのコマンドを使い、Linuxのユーザーアカウントとグループを作成・変更・削除する方法を学ぶ

Linuxはマルチユーザー対応のOSです。複数のユーザーが同じシステムを安全に使えるよう、ユーザーアカウントグループによって権限を管理します。 サーバー運用や開発環境のセットアップでは欠かせない知識です。

ユーザーとグループの基本概念

概念説明
ユーザーシステムにログインできる主体。各ユーザーは固有のUID(数値)を持つ
グループユーザーをまとめた単位。各グループは固有のGID(数値)を持つ
プライマリグループユーザーが所属するメイングループ(ファイル作成時に使われる)
サブグループユーザーが追加で所属できるグループ

現在ログインしているユーザー情報を確認するには次のコマンドを使います。

id
# uid=1000(alice) gid=1000(alice) groups=1000(alice),27(sudo),1001(dev)

whoami
# alice

ユーザーの一覧と情報確認

# /etc/passwd にすべてのユーザー情報が記録されている
cat /etc/passwd
# alice:x:1000:1000::/home/alice:/bin/bash
# 書式: ユーザー名:パスワード:UID:GID:コメント:ホームディレクトリ:シェル

# 人が読みやすい形式でユーザー一覧を確認
getent passwd | awk -F: '{print $1, $3, $6}'

# 特定ユーザーの情報
id alice

ユーザーの作成(useradd)

# 基本的なユーザー作成(rootまたはsudoが必要)
sudo useradd bob

# よく使うオプションをまとめて指定
sudo useradd \
  -m \            # ホームディレクトリを作成
  -s /bin/bash \  # デフォルトシェルを指定
  -c "Bob Smith" \ # コメント(フルネームなど)
  bob

# パスワードを設定
sudo passwd bob
# New password:
# Retype new password:
# passwd: password updated successfully

-m を付けないとホームディレクトリが作成されないので注意してください。

ユーザー情報の変更(usermod)

# ログインシェルを変更
sudo usermod -s /bin/zsh bob

# ホームディレクトリを変更(-m で中身も移動)
sudo usermod -d /home/newbob -m bob

# コメントを変更
sudo usermod -c "Bob Smith (Engineering)" bob

# アカウントをロック(ログイン不可にする)
sudo usermod -L bob

# アカウントをアンロック
sudo usermod -U bob

ユーザーの削除(userdel)

# ユーザーを削除(ホームディレクトリは残す)
sudo userdel bob

# ホームディレクトリとメールスプールも一緒に削除
sudo userdel -r bob

グループの管理

# グループ一覧を確認
cat /etc/group
# sudo:x:27:alice,carol
# 書式: グループ名:パスワード:GID:メンバー一覧

# グループの作成
sudo groupadd dev

# グループ名の変更
sudo groupmod -n development dev

# グループの削除
sudo groupdel development

ユーザーをグループに追加・削除(usermod / gpasswd)

# ユーザーをグループに追加(-aG: append to supplementary groups)
sudo usermod -aG sudo alice
sudo usermod -aG docker alice

# 複数グループに同時追加
sudo usermod -aG dev,ops alice

# グループからユーザーを削除
sudo gpasswd -d alice dev

# ユーザーが所属するグループを確認
groups alice
# alice : alice sudo docker

-aG-a(append)を忘れると既存のサブグループがすべて上書きされてしまいます。必ず -a とセットで使いましょう。

sudo 権限の付与

管理者権限が必要な操作を特定ユーザーに許可する方法は2つあります。

方法1: sudo グループに追加(推奨)

# Debian/Ubuntu 系
sudo usermod -aG sudo alice

# RHEL/CentOS 系
sudo usermod -aG wheel alice

方法2: sudoers ファイルを直接編集

# 必ず visudo コマンドで編集する(構文チェックが行われる)
sudo visudo
# /etc/sudoers の例
alice ALL=(ALL:ALL) ALL        # alice にフルsudo権限
bob   ALL=(ALL) NOPASSWD: ALL # パスワードなしでsudo実行

ステップまとめ

# 新メンバーのセットアップ手順例
sudo useradd -m -s /bin/bash -c "Carol White" carol   # ユーザー作成
sudo passwd carol                                       # パスワード設定
sudo usermod -aG dev carol                              # devグループに追加
id carol                                                # 確認

練習問題

以下の問題に挑戦してみましょう(実際のLinux環境で試してください)。

問題 1

testuser という名前のユーザーを作成し、ホームディレクトリと /bin/bash シェルを設定してください。

問題 2

project という名前のグループを作成し、testuser をそのグループに追加してください。

問題 3

testuser が所属するグループを確認するコマンドを書いてください。

問題 4

testuser のデフォルトシェルを /bin/sh に変更してください。

問題 5

testuser を削除し、ホームディレクトリも同時に削除してください。


解答

解答 1

sudo useradd -m -s /bin/bash testuser

解答 2

sudo groupadd project
sudo usermod -aG project testuser

解答 3

groups testuser
# または
id testuser

解答 4

sudo usermod -s /bin/sh testuser

解答 5

sudo userdel -r testuser

まとめ

コマンド用途
useraddユーザーの作成
usermodユーザー情報の変更・グループへの追加
userdelユーザーの削除
passwdパスワードの設定・変更
groupaddグループの作成
groupmodグループ情報の変更
groupdelグループの削除
gpasswdグループメンバーの管理
id / groupsユーザー・グループ情報の確認

ユーザー管理はシステムセキュリティの根幹です。不要なアカウントを放置せず、必要最小限の権限を付与する「最小権限の原則」を意識して管理しましょう。