Linuxシステムにおいてセキュリティを維持するために重要な対策の一つが、ユーザーのパスワード管理です。特に企業や組織での利用においては、定期的なパスワードの更新を促すことで、情報漏洩のリスクを下げることができます。
そんな時に活躍するのが「chage
」コマンドです。chage
は、ユーザーごとのパスワード有効期限や警告日数、強制変更日などを柔軟に設定できる便利なツールです。この記事では、初心者にもわかりやすく「chage」コマンドの基本から活用例まで詳しく解説します。
chageコマンドとは?
chage
(change age)は、Linuxでユーザーアカウントのパスワード有効期限や関連する制限を設定・確認するためのコマンドです。主に以下のような管理ができます。
- パスワードの有効期限の設定
- パスワード変更の最小日数・最大日数の設定
- パスワード期限切れの警告日数の設定
- アカウントの有効期限の設定
このコマンドは、ユーザーのパスワードを定期的に更新させるための仕組みとして、セキュリティポリシーを実現するうえで重要な役割を担っています。
基本的な使い方
chage
コマンドは、一般的にはrootユーザーで実行します。以下のように使います。
bashコピーする編集するsudo chage [オプション] ユーザー名
たとえば、ユーザーtestuser
のパスワード情報を確認したい場合は以下のようにします。
sudo chage -l testuser
このコマンドを実行すると、次のような出力が得られます:
Last password change : Mar 22, 2025
Password expires : May 21, 2025
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 60
Number of days of warning before password expires : 7
オプションの解説と設定方法
chage
コマンドにはさまざまなオプションがあり、特定の条件を設定するのに便利です。
-M:最大使用日数(有効期限)
ユーザーが同じパスワードを使用できる最大日数を指定します。
sudo chage -M 60 testuser
上記の例では、60日間でパスワードの変更が必要になります。
-m:最小使用日数
パスワード変更の最小日数を指定します。例えば、3日以内には変更できないようにするには:
sudo chage -m 3 testuser
-W:警告日数
パスワードの期限が切れる前に、何日前から警告を出すかを設定します。
sudo chage -W 7 testuser
7日前からユーザーに警告が表示されるようになります。
-E:アカウントの有効期限
アカウント自体の有効期限を設定します。日付形式はYYYY-MM-DDまたはUNIX日数で指定可能です。
sudo chage -E 2025-12-31 testuser
この例では、testuser
は2025年12月31日でアカウントが使えなくなります。
まとめて設定する対話モード:chage単体実行
オプションなしでchage
コマンドを実行すると、対話形式で設定を変更することができます。
sudo chage testuser
このコマンドを実行すると、以下のような対話形式のプロンプトが表示されます:
Changing the aging information for testuser
Enter the new value, or press ENTER for the default
Minimum Password Age [0]:
Maximum Password Age [99999]:
Last Password Change (YYYY-MM-DD) 2025/04/05:
Password Expiration Warning [7]:
Account Expiration Date (YYYY-MM-DD) [none]:
この方式なら、細かいオプションを覚えていなくても設定が可能です。
実際の活用例:パスワードポリシーを設定する
ここでは実際にユーザーexampleuser
に対して以下のポリシーを適用する例を紹介します:
- パスワード有効期限:90日
- 最小変更日数:1日
- 警告期間:10日
- アカウント無期限
sudo chage -M 90 -m 1 -W 10 exampleuser
設定後は以下で確認できます:
sudo chage -l exampleuser
このようにすることで、組織内のセキュリティ方針に沿ったユーザー管理が実現できます。
設定内容の確認と管理
chage -l ユーザー名
は定期的に確認するのがおすすめです。特に多数のユーザーを管理している場合や、管理対象が多岐にわたるサーバーを運用している場合には、スクリプトで一括確認・一覧化するのも効果的です。
たとえば、全ユーザーのパスワード有効期限をチェックする簡単なスクリプトは以下のように書けます:
#!/bin/bash
for user in $(cut -f1 -d: /etc/passwd); do
echo "User: $user"
chage -l $user | grep "Password expires"
done
注意点とトラブル対処法
chage
コマンドはrootユーザーで実行する必要があります。権限が不足していると変更できません。- システムユーザー(
nobody
やdaemon
など)は対象に含めないようにしましょう。 - パスワードが期限切れになるとログインできなくなるため、事前にユーザーへ通達しておくのが望ましいです。
おわりに
Linuxシステムの安全性を保つうえで、ユーザーのパスワード管理は欠かせません。「chage
」コマンドを使えば、有効期限や変更の制限、警告期間などを柔軟に設定することができ、セキュリティ強化に大いに役立ちます。
本記事で紹介した内容を参考に、自分の環境に合ったパスワードポリシーを実装してみてください。操作に慣れれば、管理の手間も減り、安心してシステムを運用できるようになりますよ。