この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:7
ページ更新者:T
更新日時:2026-06-11 07:07:02

タイトル: ユーザー作成
SEOタイトル: Linux ユーザー作成 (useradd/adduser) 完全ガイド|UID/グループ/sudo/shadow

この記事の要点
  • Linux のユーザー作成: useradd (低レベル) / adduser (Debian の対話ラッパー)
  • 主要オプション: -m ホーム作成 / -s /bin/bash シェル / -G 副グループ / -u UID
  • パスワード設定: passwd username
  • 関連ファイル: /etc/passwd / /etc/shadow / /etc/group / /etc/gshadow
  • 管理者権限: sudo グループ (Ubuntu) / wheel (RHEL) に追加 + visudo で sudoers 編集

useradd と adduser の違い

コマンド主な特徴提供環境
useradd低レベルコマンド、すべて引数指定、すべての主要ディストリRHEL / CentOS / Rocky / Alma / Ubuntu 全て
adduserDebian/Ubuntu では対話的ラッパー、useradd を内部で呼ぶDebian / Ubuntu
adduser (RHEL)useradd への単なるシンボリックリンクRHEL 系

本記事では useradd を中心に解説します (全ディストリで挙動が共通)。

基本: ユーザー作成

# 最低限 (RHEL 系では -m が既定で有効、Debian 系では -m 必須)
sudo useradd -m alice

# シェルとホームディレクトリを明示
sudo useradd -m -s /bin/bash -d /home/alice alice

# パスワード設定 (ログイン可能化)
sudo passwd alice
# New password: ********
# Retype new password: ********

# Debian/Ubuntu の対話ラッパー
sudo adduser alice
# → ホーム、シェル、パスワード、フルネーム等を順に聞かれる

主要オプション

オプション意味
-mホームディレクトリ作成 (/etc/skel をコピー)
-Mホームを作らない (システムユーザー)
-s SHELLログインシェル (例: /bin/bash, /usr/sbin/nologin)
-d DIRホームディレクトリパス
-u UIDUID 指定
-g GROUP主グループ (デフォルトは同名グループ)
-G G1,G2副グループ (カンマ区切り)
-c "COMMENT"GECOS (フルネーム等)
-e YYYY-MM-DDアカウント失効日
-rシステムユーザー (UID < 1000、ホーム作らない)
-N同名グループを作らない

典型例

# 開発者用 (bash, sudo 権限, 副グループに docker)
sudo useradd -m -s /bin/bash -G sudo,docker -c "Alice Tanaka" alice
sudo passwd alice

# UID 固定 (LDAP 統合等)
sudo useradd -m -u 1500 -s /bin/bash bob

# サービス用 (ログイン不可、ホーム無し)
sudo useradd -r -s /usr/sbin/nologin -M -d /var/lib/myapp myapp

# 一時アカウント (失効日付き)
sudo useradd -m -e 2026-12-31 contractor1

関連ファイル

ファイル内容
/etc/passwdユーザー一覧 (UID, GID, GECOS, ホーム, シェル)
/etc/shadowパスワードハッシュ + 有効期限 (root のみ読取)
/etc/groupグループ一覧 (GID, メンバー)
/etc/gshadowグループパスワード
/etc/login.defsUID/GID 範囲、パスワードポリシーのデフォルト
/etc/skelホーム作成時にコピーされるテンプレート
/etc/default/useradduseradd の既定値

/etc/passwd の書式

alice:x:1001:1001:Alice Tanaka:/home/alice:/bin/bash
 │     │  │    │       │           │             │
 │     │  │    │       │           │             └─ ログインシェル
 │     │  │    │       │           └─ ホームディレクトリ
 │     │  │    │       └─ GECOS (コメント)
 │     │  │    └─ 主 GID
 │     │  └─ UID
 │     └─ パスワード (x = /etc/shadow 参照)
 └─ ユーザー名

ユーザー変更 (usermod)

# シェル変更
sudo usermod -s /bin/zsh alice

# 副グループに追加 (-aG で append、-G だけだと既存を上書きする!)
sudo usermod -aG docker alice
sudo usermod -aG sudo,wheel alice

# ホーム移動
sudo usermod -d /var/home/alice -m alice

# ユーザー名変更 (ホームは別途)
sudo usermod -l alice2 alice

# アカウントロック / 解除
sudo usermod -L alice    # ロック (パスワード無効化)
sudo usermod -U alice    # 解除
sudo passwd -l alice     # 同等
sudo passwd -u alice

ユーザー削除 (userdel)

# ユーザーのみ削除 (ホーム残す)
sudo userdel alice

# ホームとメールスプールも削除
sudo userdel -r alice

# ログイン中でも強制削除 (危険)
sudo userdel -rf alice

# 残ファイル確認
sudo find / -uid 1001 2>/dev/null

パスワード管理 (passwd / chage)

# パスワード設定
sudo passwd alice

# 次回ログイン時に変更強制
sudo passwd -e alice
sudo chage -d 0 alice

# 90 日有効・最低 7 日変更不可
sudo chage -M 90 -m 7 alice

# 失効日を確認
sudo chage -l alice
# Last password change : ...
# Password expires     : ...

# パスワードハッシュをスクリプトで一括設定
echo "alice:NewPass123" | sudo chpasswd

グループ操作

# グループ作成
sudo groupadd developers

# GID 指定
sudo groupadd -g 2000 webops

# メンバー追加 / 削除
sudo gpasswd -a alice developers
sudo gpasswd -d alice developers

# グループ削除
sudo groupdel developers

# 所属グループ確認
groups alice
id alice
# uid=1001(alice) gid=1001(alice) groups=1001(alice),27(sudo),999(docker)

sudo 権限の付与

ディストリsudo グループ
Ubuntu / Debiansudo
RHEL / CentOS / Rocky / Almawheel
# Ubuntu / Debian
sudo usermod -aG sudo alice

# RHEL 系
sudo usermod -aG wheel alice

# sudoers を直接編集 (絶対 visudo を使う、構文ミスは visudo が検出)
sudo visudo
# alice  ALL=(ALL:ALL) ALL                         # 全コマンド sudo 可
# alice  ALL=(ALL) NOPASSWD: /usr/bin/systemctl    # パスワードなしで systemctl のみ

# /etc/sudoers.d/ にファイル単位で配置 (推奨)
echo 'alice ALL=(ALL) NOPASSWD: /usr/bin/apt' | \
  sudo tee /etc/sudoers.d/alice
sudo chmod 0440 /etc/sudoers.d/alice
sudo visudo -c    # 構文チェック

SSH 鍵の配置

# ユーザー作成後、SSH 鍵を配置するのが定石
sudo -u alice mkdir -p /home/alice/.ssh
sudo -u alice chmod 700 /home/alice/.ssh
sudo cp /tmp/alice_pubkey /home/alice/.ssh/authorized_keys
sudo chown alice:alice /home/alice/.ssh/authorized_keys
sudo chmod 600 /home/alice/.ssh/authorized_keys

# ssh-copy-id (簡単)
ssh-copy-id alice@server

一括作成スクリプト

#!/bin/bash
# users.txt: alice bob carol dave
while read name; do
  sudo useradd -m -s /bin/bash -G developers "$name"
  pass=$(openssl rand -base64 12)
  echo "$name:$pass" | sudo chpasswd
  sudo chage -d 0 "$name"   # 次回変更必須
  echo "$name $pass" >> /tmp/initpass.txt
done < users.txt

FAQ

Q: useradd でホームが作られない
A: Debian / Ubuntu では -m 必須。/etc/default/useraddCREATE_HOME=yes で既定を変更可。

Q: 既存ユーザーの UID を変えたら所有ファイルが orphan に
A: find / -uid 旧UID -exec chown 新UID {} + で所有者を一括変更してください。

Q: コンテナでルートレスにしたい
A: Dockerfile で RUN useradd -m -u 1001 app + USER app。本番ではほぼ必須のセキュリティプラクティス。