概要
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
: ユーザーアカウントの有効期限を設定する
chage
は change 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: グループの名前を指定します。例えば、
wheel
やsudo
などがあります。 - 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:
コメント