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 | ユーザー・グループ情報の確認 |
ユーザー管理はシステムセキュリティの根幹です。不要なアカウントを放置せず、必要最小限の権限を付与する「最小権限の原則」を意識して管理しましょう。