Linuxのパスワード有効期限を簡単に設定・無効化する方法

Linux パスワード有効期限の簡単な設定と無効化方法

1. はじめに

Linuxでは、セキュリティ対策の一環として、ユーザーアカウントのパスワードに有効期限を設定することが一般的です。この設定により、ユーザーが定期的にパスワードを変更するよう促せます。
一方で、管理アカウントなど、特定のユーザーに対して有効期限を無効化したいケースも存在します。そこで本記事では、Linux パスワード有効期限の設定方法と無効化方法について、具体的な手順を解説します。

関連情報:
Linuxでのユーザー管理についてさらに詳しく知りたい方は、Linuxユーザー管理完全ガイドをご覧ください。


2. パスワード有効期限の基礎

まず、パスワード有効期限やアカウント管理情報は、/etc/shadow というファイルで管理されています。このファイルは通常、管理者権限(sudo など)を持っているユーザーのみがアクセスできるよう厳重に保護されています。

/etc/shadow のフィールド構造

以下は、/etc/shadow ファイルの基本的なフォーマットです。

ユーザー名:パスワードハッシュ:最終変更日:最小日数:最大日数:警告日数:無効日数:有効期限:予約
  • 最終変更日 (Last password change)
    パスワードが最後に変更された日を「1970-01-01からの日数」で記録。
  • 最小日数 (Minimum number of days)
    パスワードを変更した後、次に再変更できるまでの日数。
  • 最大日数 (Maximum number of days)
    パスワードが有効である日数。この日数を超えるとパスワード変更が必要になります。
  • 警告日数 (Number of days of warning)
    有効期限切れ前に警告を出す日数。

3. パスワード有効期限を設定する方法

次に、Linux パスワード有効期限を設定する方法を説明します。この作業には、chage コマンドを使用します。

手順: パスワードの有効期限を90日に設定する

以下のコマンドを実行すると、指定したユーザーのパスワード有効期限を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

上記のように、Linux パスワード有効期限が90日後に設定されていれば成功です。


4. パスワード有効期限を無効化する方法

一方、特定のユーザーで「Linux パスワード有効期限を無効化」したい場合は、次の手順を実行します。

手順: 有効期限を無効化する

以下のコマンドで、パスワード有効期限を無期限に設定します。

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 を使用して、競合やパーミッションの問題を回避しながら編集を行います。

sudo vipw -s

例: パスワード有効期限を無効化する

以下のように、対象ユーザーの行を編集します。

  • 修正前:
    testuser123:!!:20040:0:30:7:::
  • 修正後:
    testuser123:!!:20040:0:-1:7:::

この変更で、「最大日数」の値が -1 に設定されます。

注意

  • 編集前には必ずバックアップを取ることを推奨します。
  • 誤った編集が行われると、ユーザーがログインできなくなる可能性があります。

6. まとめ

  • Linux パスワード有効期限を設定する場合は、以下のコマンドを使用します。
    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について勉強してみた
Last modified: 2025-01-10

Author