RHEL 6.6でユーザーのパスワードポリシーを設定しようとしています。新しく作成したユーザーに、最初のログイン時に初期パスワードを変更するようシステムに要求します。
/ etc/default/useraddでEXPIRE変数を0に、INACTIVEを-1に設定しようとしましたが、作成後に新しいユーザーアカウントの有効期限が切れることに注意してください。これらの変数を使用したユーザー作成後のchageコマンドの出力は次のとおりです。
# chage -l foo
Last password change : Feb 22, 2015
Password expires : May 23, 2015
Password inactive : never
Account expires : Feb 22, 2015
Minimum number of days between password change : 1
Maximum number of days between password change : 90
Number of days of warning before password expires : 7
Fooユーザーでログインしようとすると、「アカウントの有効期限が切れています。システム管理者に連絡してください」というメッセージが表示されます。
しかし、[ユーザープロパティ]ウィンドウを開いて[パスワード情報]タブを選択し、[次回ログイン時にパスワードの変更を強制する]をオンにすると、期待どおりの結果になります。新しいユーザーはパスワードの変更を求められます。この場合のchageコマンドの出力は次のようになります。
# chage -l foo2
Last password change : password must be changed
Password expires : password must be changed
Password inactive : password must be changed
Account expires : never
Minimum number of days between password change : 1
Maximum number of days between password change : 90
Number of days of warning before password expires : 7
Foo2ユーザーでログインすると、システムからパスワードの変更を求められます。
では、2番目のケースのように、作成時にユーザーアカウントパラメーターを設定するようにシステムを構成する方法はありますか?
cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=0
Shell=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
INACTIVEとコメントしたり、正の値に設定したりしても、アカウントは期限切れになりますが、パスワードは期限切れになりません。
また、マシン上でPAMを構成しました。
RHEL 6.2があり、PAMが設定されていないマシンでこれを確認しました。効果は同じです。
これをスクリプトに追加してみませんか?
passwd -e username
最初のログインだけが目的の場合、これは機能します。 -e
アカウントのパスワードはすぐに期限切れになるので、次回のログインでユーザーはパスワードを更新する必要がありますか? (見る man passwd
)