Linuxにおけるユーザーおよびグループアカウント管理

ユーザーとグループの基本構造

Linuxシステムでは、すべてのアクセス操作はユーザー単位で制御されます。特にrootユーザー(UID=0)は特権アカウントであり、システム全体に対する完全な制御権を持ちます。ユーザーおよびグループに関する主な設定ファイルは以下の通りです。

  • /etc/passwd:ユーザー情報の定義
  • /etc/shadow:暗号化されたパスワードと有効期限情報
  • /etc/group:グループ情報の定義
  • /etc/gshadow:グループパスワードと管理者情報

ユーザー種別

タイプ 説明
スーパーユーザー (root) UIDが0の特別なアカウント。システムの全機能を操作可能。
システムユーザー サービスやデーモン用の仮想アカウント(例: nobody, sshd)。通常ログイン不可。UID範囲は1~999。
一般ユーザー 管理者が作成する日常利用者向けアカウント。UIDは1000以上。自身のホームディレクトリ内でのみ自由に操作可。

/etc/passwd ファイルの構造

このファイルは全ユーザーから読み取り可能です。各行は7つのフィールドで構成され、コロン(:)で区切られます。

exampleuser:x:1005:1005:Example User:/home/exampleuser:/bin/bash
フィールド 意味
ユーザー名 ログイン時に使用する名前。一意である必要がある。
パスワードプレースホルダー 実際のパスワードは/etc/shadowに格納されているため、ここにはxが表示される。
UID ユーザー識別番号。0はroot、1000以降が一般ユーザー。
GID プライマリグループの識別番号。
コメント(GECOS) ユーザーのフルネームや連絡先など。任意項目。
ホームディレクトリ ログイン後に初期遷移するディレクトリ。
ログインシェル ユーザーが使用するコマンドインタープリタ。一般的には/bin/bash

/etc/shadow のセキュリティ管理

このファイルはrootのみが読めるようになっており、パスワードの安全性を確保しています。各エントリは9つのフィールドからなります。

testuser:$6$salt$encryptedhash:19145:0:99999:7:::
フィールド 詳細
ユーザー名 /etc/passwdとの対応を保つ。
暗号化パスワード SHA-512などのハッシュ値。空または!!/*はパスワード未設定を示す。
最終変更日 1970年1月1日からの経過日数。
変更最小期間(日) 次回変更までの最低待機日数。0なら即時変更可。
変更最大期間(日) パスワードの有効期限。超過すると強制変更が必要。
警告期間(日) 有効期限切れ前に何日前から警告するか。
非アクティブ期間 パスワード失効後、アカウントがロックされるまでの猶予日数。
アカウント無効化日 アカウント全体の無効化日(経過日数指定)。
予約フィールド 将来拡張用。現時点では未使用。

ユーザー管理コマンド

ユーザー作成: useradd

新しいユーザーを追加する際に使用します。

useradd [オプション] ユーザー名
オプション 機能
-u UID 特定のUIDを割り当てる。
-g GID プライマリグループを指定。
-G group1,group2 所属するサブグループを追加。
-d /path/to/home カスタムホームディレクトリを設定。
-s /bin/zsh ログインシェルを変更。
-m ホームディレクトリが存在しない場合に自動生成。
-r システムユーザーとして作成(ホームディレクトリなし)。

例:ユーザーtaroを作成し、UID 1050、グループdevelopersに属させる。

# groupadd developers
# useradd -u 1050 -g developers -G wheel -m -s /bin/bash taro
# passwd taro

ユーザー属性変更: usermod

既存ユーザーの設定を更新するために使用。

usermod -d /new/home/dir -m username
usermod -s /bin/ksh username
usermod -e 2030-12-31 username

-mと組み合わせた-dは、古いホームディレクトリを新しい場所へ移動します。

ユーザー削除: userdel

不要になったユーザーを削除。

userdel username           # アカウントのみ削除
userdel -r username        # アカウントとホームディレクトリ両方を削除

グループ管理

グループ種別

  • プライベートグループ:ユーザー作成時に自動生成される同名グループ。
  • 標準グループ:複数ユーザーが共有するグループ(例: developers, admins)。
  • プライマリグループ:ユーザーがログイン時に所属するメイングループ(一つだけ)。
  • セカンダリグループ:追加で所属可能な補助グループ(複数可)。

グループ操作コマンド

コマンド 用途
groupadd 新規グループ作成。例:groupadd -g 1200 analysts
groupmod グループ名またはGID変更。例:groupmod -n newname oldname
groupdel グループ削除。メンバーがいる場合でも削除可能(ただし注意が必要)。

補助ツール

  • gpasswd: グループパスワードやメンバー管理に使用。
    gpasswd -a alice developers    # aliceをdevelopersに追加
    gpasswd -d bob developers      # bobをdevelopersから削除
    gpasswd -A manager developers  # managerを管理者に設定
    
  • newgrp: 現在のセッションでグループを切り替える。
    newgrp developers
    
  • id: ユーザーのUID/GID情報を表示。
    id alice
    # 出力例: uid=1001(alice) gid=1001(alice) groups=1001(alice),1200(developers)
    
  • groups: 特定ユーザーが所属するグループ一覧を表示。
    groups alice
    # 出力例: alice : alice developers
    

高度な操作例

パスワードポリシーの確認:

cat /etc/login.defs | grep -E "(UID_MAX|GID_MIN)"
# UID_MAX 60000
# GID_MIN 1000

アカウント状態の監査:

passwd -S username    # パスワードの有効期限やロック状態を確認

一時的な権限昇格:

su - username         # 別ユーザーとしてログイン(環境も変更)
su -c "ls /root" root # 一時的にrootでコマンド実行

タグ: linux ユーザーアカウント グループ管理 /etc/passwd /etc/shadow

7月27日 00:09 投稿