変更要約: 初版(主題1.08・副主題1.08.1〜1.08.3に対応)
3.1アカウント管理
ユーザーとグループの管理を学びます。useradd・userdel・usermod、groupadd・groupdel・groupmod、既定値(/etc/default/useradd)と雛形(/etc/skel/)、アカウント情報のデータベース(/etc/passwd・/etc/shadow・/etc/group)、passwd によるパスワード管理、確認用の getent・id を押さえます。
入社・異動・退職のたびに発生するアカウント管理は、システム管理者の最頻業務のひとつです(本主題の中でも重要度5)。コマンドの使い分けと、裏側の3つのデータベースファイルの役割を押さえれば得点源になります。
3.1.1ユーザー・グループ操作コマンド
- useradd=ユーザー作成(
useradd -m user01=ホームディレクトリも作成)。既定値は /etc/default/useradd(既定シェル等)と /etc/login.defs、新規ホームの雛形は /etc/skel/(ここに置いたファイルが新ユーザーのホームへコピーされる)。 - usermod=変更(
-aG dev user01=-a を付けてグループ追加・-L/-U=ロック/解除・-s=シェル変更)。userdel=削除(-rでホームごと)。 - グループ=groupadd・groupmod(名前/GID 変更)・groupdel。
- passwd=パスワード設定(root は他ユーザーのも変更可)。確認系=id(UID/GID/所属グループ)・getent(
getent passwd user01=NSS 経由でアカウント情報を引く=LDAP 等の外部ソースも含む)。
3.1.2アカウント情報の3ファイル
- /etc/passwd=ユーザーの基本情報(名前:x:UID:GID:コメント:ホーム:シェル)。全ユーザーが読めるため、パスワード本体は置かない(x はシャドウ参照の印)。
- /etc/shadow=ハッシュ化パスワードとエージング情報(最終変更日・有効期限等)。root のみ読める。
- /etc/group=グループ名:x:GID:メンバー一覧。複数グループ所属はここのメンバー欄(+ユーザーのプライマリグループは passwd 側の GID)。
「パスワードの実体は /etc/shadow(root のみ可読)・/etc/passwd の x は参照印」「新規ホームの雛形=/etc/skel/」「グループ追加は usermod -aG(-a を忘れると既存グループから外れる)」 の3点が最頻出です。userdel -r(ホームごと削除)と素の userdel の違いも定番です。
新入社員の受け入れを一連で流すと全部つながります。useradd -m -s /bin/bash tanaka でユーザーとホームを作成——このとき /etc/skel/ の内容(.bashrc の雛形など全社共通の初期設定)が新しいホームへコピーされます。passwd tanaka で初期パスワードを設定し、usermod -aG dev,docker tanaka でプロジェクトのグループへ追加します。ここで -a(append)を忘れて -G dev とだけ書くと、所属グループが dev だけに置き換わる——これが本副主題いちばんの実務事故ポイントです。設定の確認は id tanaka(uid/gid/groups が一目でわかる)と getent passwd tanaka で行います。getent を使う理由は、大規模環境ではアカウントが LDAP など外部ディレクトリにあることがあり、/etc/passwd を cat しても見えないからです(NSS 経由の getent なら統合結果が見える)。退職時は usermod -L でまずロック(即時の無効化・データは保全)→ 手続き完了後に userdel -r で削除、という2段階が安全な運用です。
| ファイル | 中身 | 読み取り権 |
|---|---|---|
| /etc/passwd | UID/GID・ホーム・シェル | 全ユーザー可読 |
| /etc/shadow | パスワードハッシュ・エージング | root のみ |
| /etc/group | グループとメンバー | 全ユーザー可読 |
| /etc/skel/ | 新規ホームの雛形 | useradd -m 時にコピー |
ひっかけ: 「ユーザーのパスワードは /etc/passwd に暗号化されて保存される」は誤りです(歴史的には真だったが、現在は /etc/shadow に分離)。また「usermod -G dev で dev グループに追加される」も要注意=既存の所属がすべて dev に置き換わるため、追加は必ず -aG です。「/etc/skel はロックされたアカウントの退避先」のような役割の捏造にも注意(skel は新規ホームの雛形)。
3.1.3この節のまとめ
- 操作=useradd(-m)/usermod(-aG・-L/-U)/userdel(-r)・group{add,mod,del}・passwd。確認は id・getent
- passwd=基本情報(可読)・shadow=ハッシュ(root のみ)・group=所属。雛形は /etc/skel/・既定は /etc/default/useradd
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. 既存ユーザー tanaka を、現在の所属グループを維持したまま docker グループに追加したい。適切なコマンドは?
Q2. ハッシュ化されたパスワードとパスワードの有効期限情報が保存されている、root のみが読めるファイルはどれ?
Q3. 全新規ユーザーのホームディレクトリに、会社標準の設定ファイル一式を自動配布したい。ファイルを置くべき場所は?

