0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ユーザとグループ

Last updated at Posted at 2025-10-15

『Linux標準教科書』を読み始めながら、学びを自分の言葉で整理した忘備録です。
標準教科書の内容についてChatGPTの対話で得た理解・補足をかみ砕いてまとめました。

本記事は全12章のうちの第7章。ユーザ・グループ周りについて、標準教科書を軸にしながらChatGPTとの会話を肉付けしていく形で整理したものになります。
学ぶ途中のつまずきや疑問もそのまま残す方針なので、同じところで悩む人の助けになればと思ってます!

6章と10章の内容も併せてご確認ください!


目次

ユーザ

ユーザが記述されたファイル

/etc/passwd(ユーザの基本情報)

形式:ユーザ名:パスワード欄:UID:GID:注釈(GECOS):ホームディレクトリ:ログインシェル
例:

alice:x:1001:1001:Alice,,,:/home/alice:/bin/bash
# x → 実際のハッシュは /etc/shadow に保存

主な用途:UID/GIDとホーム、ログインシェルの紐付けをOSに伝える

/etc/shadow(シャドウファイル)

各ユーザパスワードのハッシュやパスワード有効期限を格納(一般ユーザは読めない)

形式:ユーザ名:ハッシュ:最終変更日:最小日数:最大日数:警告日数:無効化日数:有効期限:予備
例:

alice:$y$j9T$...:20000:0:99999:7:::
# $y$... → yescrypt等のハッシュ。!や*でロックを示すことも

シャドウファイルとは?
セキュリティ強化のため、/etc/passwd からパスワード情報を分離して管理者のみ読めるファイルにしたもの。

/etc/login.defs(既定値)

UID/GID の範囲、パスワード有効期限など useradd の初期値を定義
例:CREATE_HOME の有無、PASS_MAX_DAYS など

新規作成

Ubuntuの要点

  • adduser:高レベルの対話コマンド。ホームを作成し、/etc/skel を展開するのが標準。
  • useradd:低レベルコマンド。デフォルトのままだとホームを作らない(→ -m を付ける)。

adduser(Ubuntu流・おすすめ)

sudo adduser alice
# 途中でパスワード等を対話設定
# 想定: /home/alice が作成され、/etc/skel の初期ファイルがコピーされる

useradd(スクリプト向け・厳密制御)

sudo useradd -m -s /bin/bash -U alice
# -m: ホーム作成, -s: シェル, -U: 同名のプライマリグループ
sudo passwd alice
# 想定: /home/alice が作られ、ログイン可能になる(鍵/パスワードいずれか必須)

チェック系

getent passwd alice
# 想定: alice:x:1001:1001:...:/home/alice:/bin/bash

id alice
# 想定: uid=1001(alice) gid=1001(alice) groups=1001(alice)

注意(演習で出たポイント)

UID 1001 is not unique:既存UIDと衝突。getent passwd 1001 で確認。
useradd -u 1001 -o で重複UIDは技術的に可能だが非推奨

削除

sudo userdel alice
# 想定: /etc/passwd 等のエントリが消えるが、ホームは残る

sudo userdel -r alice
# 想定: ホーム /home/alice も削除(重要データの扱いに注意)

編集(属性変更)

# ログインシェル変更
sudo usermod -s /bin/zsh alice
# 想定: /etc/passwd のシェル欄が /bin/zsh に

# 表示名(GECOS)変更
sudo chfn -f "Alice Example" alice
# 想定: /etc/passwd の注釈欄が更新

# 補助グループに追加(-aG の a を忘れない)
sudo usermod -aG sudo,docker alice
# 想定: id alice に groups=... sudo, docker が追加

# UID 変更(要計画)
sudo usermod -u 1101 alice
# 想定: 所有権移管が必要
sudo find / -xdev -uid 1001 -exec chown -h alice {} \;

パスワード

設定・変更・ロック

sudo passwd alice
# 想定: 対話で新パスワード設定 → /etc/shadow 更新

sudo passwd -l alice   # ロック
sudo passwd -u alice   # アンロック
sudo passwd -S alice   # 状態確認(locked 等)

有効期限(パスワードエイジング)

sudo chage -l alice
# 想定: 最終変更日/最大日数/警告日数を一覧表示

sudo chage -M 90 -W 14 alice
# 想定: 90日で期限, 14日前から警告

Ubuntuのrootについて

  • 初期状態では root はロック(パスワードなし)。sudo で管理作業を行うのが前提。
sudo -i
# 想定: 一時的に root シェルへ

# どうしても su を使いたい場合のみ root にパスワード付与(非推奨)
sudo passwd root
su -

ログインユーザの変更

su / su -

su bob
# 想定: 非ログインシェルで bob に切替(bob のパスワードが必要)

su - bob
# 想定: bob に「ログインした体」(HOME, PATH 等も bob 仕様)

sudo(推奨)

sudo -u bob -i
# 想定: bob としてログインシェル開始(自分が sudoer であること)

sudo -u bob command
# 想定: bob の権限で 1 コマンドだけ実行

SSH

ssh bob@host
# 想定: bob のパスワード or 公開鍵で認証(authorized_keys を bob の HOME に配置)

ログインできない典型原因

  • パスワード未設定/ロックsudo passwd <user>
  • 無効なシェル/usr/sbin/nologin/bin/falseusermod -s /bin/bash

グループ

グループが記述されたファイル

/etc/group

  • 形式:グループ名:パスワード欄:GID:メンバー,メンバー,...
  • 例:
    developers:x:1002:alice,bob
    
  • 補助グループ(複数所属)にユーザを入れるときにここへ反映。

/etc/gshadow(グループのシャドウ)

  • /etc/group の秘匿情報版(グループパスワード/管理者など)

新規作成

sudo groupadd developers
# 想定: /etc/group に developers:x:<新GID>: が追加

# GID を明示
sudo groupadd -g 1010 web
# 想定: GID 1010 の web グループ

ユーザを補助グループへ追加(よく使う)

sudo usermod -aG developers alice
# 想定: /etc/group の developers 行末に alice が追加

削除

sudo groupdel developers
# 想定: developers の行が /etc/group から削除
# ※ そのグループをプライマリにしているユーザがいる場合は不可

編集(属性変更)

# グループ名変更
sudo groupmod -n devs developers
# 想定: developers → devs にリネーム

# GID 変更
sudo groupmod -g 1102 devs
# 想定: GID が 1102 に変更(所有グループのファイル移管は手動で)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?