【Linux】chageコマンドでパスワードの有効期限とアカウント失効日を管理する

目次

概要

ユーザーアカウントのパスワード有効期限(Expiration)や、パスワード期限切れ後の猶予期間、アカウント自体の失効日などを詳細に管理・表示するためのコマンドです。

定期的なパスワード変更を強制するセキュリティポリシーの運用や、契約終了日に合わせてアカウントを自動停止させる設定などに使用されます。

仕様(引数・オプション)

構文

chage [オプション] [ユーザー名]

主なオプション

オプション説明
-d [日付]パスワードの最終変更日を「YYYY-MM-DD」形式(または1970/1/1からの日数)で設定します。0 を指定すると次回ログイン時に変更を強制します。
-E [日付]アカウント自体の無効化日(失効日)を設定します。「YYYY-MM-DD」形式。-1 で無効化を解除します。
-I [日数]パスワード期限切れ後、アカウントがロックされるまでの猶予日数(非アクティブ期間)を設定します。
-l / –list現在の設定内容(有効期限情報)を表示します。
-m [日数]パスワードを変更してから、次に変更可能になるまでの最短日数を設定します(頻繁な変更を防止)。
-M [日数]パスワードの最大有効日数(有効期限)を設定します。
-W [日数]パスワードの有効期限が切れる何日前から警告メッセージを表示するか設定します。

基本の使い方

自分のパスワード情報を確認する

現在ログインしているユーザー(mori)が、自分自身のパスワード有効期限設定を確認します。

# 自分の情報を表示
chage -l mori

実行結果例

Last password change                                    : Jan 26, 2026
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

他人のパスワード情報を確認しようとする(一般ユーザー)

一般ユーザー権限で、他のユーザー(または自分と同じ名前であっても引数指定の仕方によっては)の情報を閲覧しようとすると、セキュリティ上の理由で拒否されます。

# 一般ユーザー権限で実行
chage -l root

実行結果例

chage: Permission denied.

実践コマンド

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

管理者(root)権限を使用して、ユーザー mori のパスワードが90日ごとに変更必須となるよう設定します。同時に、期限切れの7日前から警告を出すようにします。

# 最大日数90日、警告7日前に設定
sudo chage -M 90 -W 7 mori

# 設定後の確認
sudo chage -l mori | grep "Password expires"

アカウントの有効期限(失効日)を設定する

契約社員や短期プロジェクトのメンバーなど、特定の日付(例: 2026年3月31日)以降はログインできないように設定します。これはパスワードの変更有無に関わらず適用されます。

# 2026年3月31日でアカウントを無効化
sudo chage -E 2026-03-31 mori

次回ログイン時にパスワード変更を強制する

最終変更日を「0」(1970年1月1日)にリセットすることで、システムに「パスワードが古すぎる」と判断させ、直後のログイン時に変更画面へ誘導します。

# パスワード変更を強制
sudo chage -d 0 mori

注意点

  1. 一般ユーザーの制限chage コマンドで設定を変更(書き込み)できるのは管理者(root)のみです。一般ユーザーは -l オプションで自分の情報を閲覧することしかできません。
  2. passwdコマンドとの重複passwd -xpasswd -w など、passwd コマンドでも同様の設定が可能ですが、chage の方がより詳細な項目(最終変更日の直接指定など)を扱えます。どちらを使っても /etc/shadow ファイルが書き換わる点は同じです。
  3. 無効化(Expire)とロック(Lock)の違いchage -E で設定する「有効期限切れ」は日付による自動失効です。一方 usermod -L などで行う「ロック」は管理者が手動で止める操作です。どちらもログイン不可になりますが、管理の意味合いが異なります。

まとめ

chage は、システム運用における「時間軸」でのアカウント管理を司るコマンドです。

特に「-M で定期変更を促す」「-E で退職予定日に合わせて停止予約する」といった使い方が一般的です。ユーザーから「ログインできなくなった」と問い合わせがあった場合、まずは chage -lPassword expiresAccount expires の日付を確認してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次