🐵

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 expiresnever となり、パスワード有効期限が無期限になったことを確認できます。


5. /etc/shadow を直接編集する方法

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上でのパスワード有効期限管理は、システムのセキュリティを高める上で非常に重要です。システム要件に応じて有効期限を適切に設定し、必要なユーザーは無期限にするなど柔軟に対応しましょう。定期的にパスワードを見直すことで、セキュリティリスクを最小限に抑えることができます。

** 参考リンク**

  1. /etc/passwdと/etc/shadowファイルについてのまとめ | server-memo.net
  2. Linux 用 /etc/shadow ファイル完全ガイド
  3. ひつまぶし食べたい: /etc/shadowについて勉強してみた

Discussion