Linuxのパスワード有効期限を設定・無効化する方法【初心者向け解説】
Linuxのパスワード有効期限を設定・無効化する方法【初心者向け解説】
1. はじめに
Linuxでは、セキュリティ対策の一環として、ユーザーアカウントのパスワードに有効期限を設定することが一般的です。パスワード有効期限を設定することで、ユーザーが定期的にパスワードを変更するよう促せます。
一方、管理アカウントなど、特定のユーザーに対して有効期限の制限をかけたくないケースも存在します。
2. パスワード有効期限の基礎
パスワード有効期限やアカウント管理の情報は、/etc/shadow
というファイルで管理されています。通常、管理者権限(sudo
など)を持っているユーザーのみがアクセスできるよう、厳重に保護されています。
/etc/shadow
のフィールド構造
ユーザー名:パスワードハッシュ:最終変更日:最小日数:最大日数:警告日数:無効日数:有効期限:予約
-
最終変更日 (Last password change)
パスワードが最後に変更された日を「1970-01-01からの日数」で記録。 -
最小日数 (Minimum number of days)
パスワードを変更した後、次に再変更できるまでの日数。 -
最大日数 (Maximum number of days)
パスワードが有効である日数。この日数を超えるとパスワード変更が必要になります。 -
警告日数 (Number of days of warning)
有効期限切れ前に警告を出す日数。
3. パスワード有効期限を設定する方法
パスワード有効期限を設定するには、chage
コマンドを使います。
例えば、以下のコマンドで「パスワードの有効期限を90日にする」設定が可能です。
sudo chage -M 90 testuser123
-
-M 90
は「最大日数 (Maximum) を 90 日」に設定するオプションです。 -
testuser123
は、設定したいユーザー名に置き換えてください。
設定が正しく反映されたか確認する
sudo chage -l testuser123
出力例:
Last password change : Nov 13, 2024
Password expires : Feb 11, 2025
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 90
Number of days of warning before password expires : 7
このように有効期限が 90 日後に設定されていればOKです。期限が切れたタイミングでパスワード変更が強制されるようになります。
4. パスワード有効期限を無効化する方法
特定のユーザーで「パスワードの有効期限を無効にしたい」場合、以下のコマンドを実行します。
sudo chage -M -1 testuser123
-
-M -1
は「最大日数を -1 に設定(無期限化)」を意味します。
設定が正しく反映されたか確認する
sudo chage -l testuser123
出力例:
Last password change : Nov 13, 2024
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : -1
Number of days of warning before password expires : -1
Password expires
が never
となり、パスワード有効期限が無期限になったことを確認できます。
/etc/shadow
を直接編集する方法
5. chage
コマンドを使わずに、/etc/shadow
を直接編集して設定を変更することも可能です。
ただし、誤った編集はシステムに深刻な影響を及ぼす可能性があるため、注意してください。
編集には、専用コマンドの vipw -s
を使うのが安全策です。このコマンドは、ファイルの競合やパーミッションの変更を防ぎながら /etc/shadow
を編集できます。
例: パスワード有効期限を無効化する
-
修正前:
testuser123:!!:20040:0:30:7:::
-
修正後:
testuser123:!!:20040:0:-1:7:::
「最大日数」の値を -1
に変更して保存します。変更後は、chage -l testuser123
などで設定を確認してください。
注意
/etc/shadow
編集前に必ずバックアップを取りましょう。- 直接編集する場合、誤った入力でユーザーがログインできなくなる等のリスクがあります。
6. まとめ
-
パスワード有効期限を設定する場合は、
sudo chage -M <日数> ユーザー名
-
パスワード有効期限を無効化する場合は、
sudo chage -M -1 ユーザー名
-
/etc/shadow
の直接編集は慎重に行い、編集前にバックアップをとること。
Linux上でのパスワード有効期限管理は、システムのセキュリティを高める上で非常に重要です。システム要件に応じて有効期限を適切に設定し、必要なユーザーは無期限にするなど柔軟に対応しましょう。定期的にパスワードを見直すことで、セキュリティリスクを最小限に抑えることができます。
** 参考リンク**
- /etc/passwdと/etc/shadowファイルについてのまとめ | server-memo.net
- Linux 用 /etc/shadow ファイル完全ガイド
- ひつまぶし食べたい: /etc/shadowについて勉強してみた
Discussion