Linuxのユーザ、グループについて整理しておく

Linuxでは、各ファイルおよびディレクトリについて、どのユーザが読み・書き・実行できるかを設定する。
まずは、「どのユーザ」にあたる部分の選択肢を網羅的に把握する。

概念

ユーザ
  • /etc/passwd ファイルに下記の形式で保存されている
ユーザ名:x(※以前は暗号化されたパスワードだった):ユーザID(UID):プライマリグループID(GID):コメント:ホームディレクトリ:デフォルトシェル

例:

user01:x:500:500:first user:/home/user01:/bin/bash
  • /etc/passwd ファイルはプレーンファイルで、一般ユーザも読み出し可能
  • セキュリティの観点からパスワードだけは、rootしか読み出しできない /etc/shadow ファイルに保存される。(シャドウパスワード)
ユーザ名:暗号化されたパスワード:1970/01/01からPWD変更日までの日数:変更可能最短期間:未変更可能最長期間:警告開始日:インアクティブ日数:失効までの日数:(未使用)
  • ユーザは一つのプライマリグループと複数のサブグループに属することができる
  • ファイル等作成時に所有グループとしてデフォルト設定されるグループはプライマリイグループである
  • ユーザ作成時のデフォルトのグループ割り当てはディストリビューションによって異なる
グループ
  • /etc/group ファイルに下記の形式で保存されている
グループ名:x(※以前は暗号化されたパスワードだった):グループID(GID):グループメンバ(※カンマ区切り。グループ名と同じユーザ名をもつユーザは含まれない)

例:

staff:x:500:user01,user02
  • パスワードはユーザと同様に別ファイル /etc/gshadow に保存される
  • グループへのログイン(プライマリグループの切り替え)も可能
    • ログイン中のユーザが対象のグループに所属している場合はパスワード不要
    • グループに所属していないユーザは、対象のグループにパスワードが設定されていない場合はログインできない

操作

追加・編集・削除・確認・切替のコマンドについて、頻用オプションを添えて記載する。(※Ubuntuについて記載)
なお、アカウント管理コマンドは root (またはsudo)でしか実行できない。

ユーザ
  • useradd [オプション] ユーザ名
    • -c コメント : コメント指定
    • -d ディレクトリ : ホームディレクトリ指定
    • -g グループ名orGID : プライマリグループ指定(※未指定の場合、ユーザ名と同じ名前のグループ)
    • -G グループ名orGID : サブグループ指定
    • -k ディレクトリ : ひな形ディレクトリの指定
    • -m : ホームディレクトリを作成する
    • -M : ホームディレクトリを作成しない(※デフォルト)
    • -N : ユーザ名と同じ名前のグループを作成しない
    • -p パスワード : パスワード(crypt(3)にて暗号化済みのパスワード)指定
    • -s : ログインシェル指定
    • -u : UID指定
    • -U : ユーザ名と同じ名前のグループを作成する(※デフォルト)
    • -D : デフォルトの設定値の表示 or 設定
    • ※ /etc/skel ディレクトリ以下のファイルがひな形としてホームディレクトリ以下にコピーされる

例:

sudo useradd -u 3000 -U -G group1 -c "group1 developser" -m -d /home/user1 -s /bin/bash user1
  • usermod [オプション] ユーザ名
    • 上記の大半のオプションを使用可能
    • -G グループ名リスト -a : 所属するサブグループの追加
    • -L : パスワードロックによりアカウントを一時的に無効化
    • -U : パスワードロックの解除
  • passwd [オプション] [ユーザ名] ※パスワードの変更。root以外も自身のパスワードは変更可能
    • -d : パスワードの削除
    • -l : パスワードロックによりアカウントを一時的に無効化
    • -u : パスワードロックの解除
    • -S : パスワード状態の表示
<L:ロック,NP:パスワード設定なし,P:パスワード使用可能> <パスワード変更日> <最短期限> <最長期限> <警告期間> <使用不能期間>
  • chpasswd ※パスワードを一括変更

例:

sudo chpasswd <<EOF
user01:user01pwd
user02:user02pwd
EOF
  • userdel [オプション] ユーザ名
  • id [オプション] [ユーザ名] ※ユーザ情報の確認
  • su [オプション] [ユーザ名]
    • - : そのユーザのシェル環境を使用する
グループ
  • groupadd [オプション] グループ名
    • -g GID : GID指定
    • -p パスワード : パスワード(crypt(3)にて暗号化済みのパスワード)指定

例:

sudo groupadd -g 2001 guest
  • groupmod [オプション] グループ名
  • gpasswd [オプション] グループ名
    • -a ユーザ名 : グループに所属するメンバにユーザを追加する
    • -M ユーザ名リスト : グループに所属するメンバのリストを設定する
    • -A ユーザ名リスト : グループの管理者のリストを設定する
  • groupdel グループ名
    • ※あるユーザのプライマリグループとして設定されているグループは削除できない
    • ※サブグループとして設定されているグループが削除されると、ユーザ情報側からもそのグループに所属していたという情報が削除される
  • getent group ※グループ情報の確認
  • newgrp グループ名 ※プライマリグループの切替

参考文献

Linux教科書 LPICレベル1 第4版 (CD-ROM付)

Linux教科書 LPICレベル1 第4版 (CD-ROM付)