/etc/passwd と /etc/shadow について

目次

概要

Linux システムで、ユーザーアカウント情報やパスワード情報を管理するために使用される /etc/passwd ファイルと /etc/shadow ファイルについて解説します。

/etc/shadow

/etc/passwd ファイルは、システム上の全ユーザーの基本情報を保持するテキストファイルです。このファイルには、各ユーザーのアカウント情報が一行ずつ記述されています。各行のフィールドはコロン : で区切られています。

# そのまま表示
$ cat /etc/passwd
# 整形して表示
$ cut -d: -f1,2,3,4,5,6,7 /etc/passwd | column -t -s:

フィールドの構造

username:x:UID:GID:comment:home_directory:shell
  • username: ユーザー名
  • x: パスワードプレースホルダー(実際のパスワードは /etc/shadow ファイルに保存されます)
  • UID: ユーザー ID
  • GID: グループ ID
  • comment: ユーザーのフルネームやその他の情報 (GECOS フィールド)
  • home_directory: ユーザーのホームディレクトリ
  • shell: ユーザーのログインシェル

nekobean:x:1001:1001:Nekobean User:/home/nekobean:/bin/bash

/etc/shadow ファイル

/etc/shadow ファイルは、ユーザーのパスワード情報を暗号化された形式で保存するテキストファイルです。このファイルは、通常のユーザーが読み取れないように保護されています。各行には、対応する /etc/passwd のユーザーのパスワード情報が記述されています。

# そのまま表示
$ sudo cat /etc/shadow
# 整形して表示
$ sudo cut -d: -f1,2,3,4,5,6,7,8,9 /etc/shadow | column -t -s:

フィールドの構造

username:password:last_change:min:max:warn:inactive:expire
  • username: ユーザー名
  • password: 暗号化されたパスワード
  • last_change: パスワードが最後に変更された日(UNIX エポックからの日数)
  • min: パスワード変更の最小日数
  • max: パスワード変更の最大日数
  • warn: パスワード有効期限が近づいた際の警告日数
  • inactive: アカウントが無効になるまでの日数
  • expire: アカウントの有効期限(UNIX エポックからの日数)
  • preserved: 予約フィールド

chage: ユーザーアカウントの有効期限を設定する

chagechange age の略で、ユーザーアクセスの有効期限に関する設定を変更するコマンドです。

オプション 説明
-d パスワードが最後に変更された日を設定します(YYYY-MM-DD 形式)
-m パスワード変更の最小日数を設定します
-M パスワード変更の最大日数を設定します
-W パスワード有効期限が近づいた際の警告日数を設定します
-I パスワード無効になるまでの日数を設定します
-E アカウントの有効期限を設定します(YYYY-MM-DD 形式)
-l ユーザーのパスワードの有効期限情報を表示します

このコマンドを使用して /etc/shadow の各項目は以下のように変更できます。

説明 コマンド例
パスワード passwd
パスワードが最後に変更された日 sudo chage -d <YYYY-MM-DD> <username>
パスワード変更の最小日数 sudo chage -m <日数> <username>
パスワード変更の最大日数 sudo chage -M <日数> <username>
パスワード有効期限が近づいた際の警告日数 sudo chage -W <日数> <username>
アカウントが無効になるまでの日数 sudo chage -I <日数> <username>
アカウントの有効期限 sudo chage -E <YYYY-MM-DD> <username>
アカウントの有効期限 sudo usermod -e <YYYY-MM-DD> <username>

文章の添削を行いました。以下をご確認ください。

アカウントの有効期限とパスワードの有効期限が切れた後、アカウントが無効になるまでの日数は、useradd コマンドでユーザー作成時に設定できます。

例として、ユーザー nekobean を作成し、アカウントの有効期限を 2025 年 12 月 31 日、パスワードの有効期限が切れた後にアカウントが無効になるまでの日数を 30 日に設定するには、以下のコマンドを使用します。

sudo useradd -e 2025-12-31 -f 30 nekobean

/etc/group

/etc/groupファイルは、ユーザーのグループ情報を管理するためのファイルです。このファイルには、システム上のすべてのグループの情報が保存されています。各行には一つのグループの情報が記載されており、以下の形式で構成されています:

Group Name:Password:GID:Group Members
  • Group Name: グループの名前を指定します。例えば、wheelsudoなどがあります。
  • Password: グループのパスワードが保存されます。通常、このフィールドは使用されず、xと表示されることが多いです。
  • GID: グループの一意の識別番号です。例: 1000
  • Group Members: カンマで区切られたグループに属するユーザーのリストです。例えば、user1,user2,user3のように表示されます。
# そのまま表示
$ sudo cat /etc/group
# 整形して表示
$ sudo cut -d: -f1,2,3,4 /etc/group | column -t -s:

コメント

コメントする

目次