さて、私たちは皆セキュリティに関心があるので、ユーザーは定期的にパスワードを変更する必要があります(パスワードは下着のようなものだと誰が言ったのですか?)。
Redhatおよびcentos(5.xおよび6.x)では、すべての実際のユーザーパスワードを45日後に期限切れにし、7日前に警告することができます。
/ etc/shadowエントリは次のようになります:
testuser:$6$m8VQ7BWU$b3UBovxC5b9p2UxLxyT0QKKgG1RoOHoap2CV7HviDJ03AUvcFTqB.yiV4Dn7Rj6LgCBsJ1.obQpaLVCx5.Sx90:15588:1:45:7:::
これは非常にうまく機能し、ほとんどのユーザーは頻繁にパスワードを変更します。
一部のユーザーは、パスワードではなくssh公開鍵を使用すると便利だと感じています(そして私はそれらを奨励したいと思います)。
その後、45日後、パスワードを忘れて変更するように求められたため、ログインできなくなりました。
パスワードが無効になっている場合にのみ、パスワードの有効期限が切れないようにする方法はありますか?
設定testuser:!!:15588:1:45:7:::
in/etc/shadowが機能しませんでした:testuserは45日後にパスワードを変更するように求められます。
もちろん、パスワードの有効期限を99999日に戻すことはできますが、次のようになります。
ユーザーが本当にパスワードを持っている場合にのみ、期限切れのパスワードを変更するようにユーザーに促すシステム全体のパラメーターはありますか?
ユーザーがパスワードを覚えていない場合、それは確かにユーザーがパスワードを使用する必要がないためです。 LDAPなどの一元化された認証システムを使用することをお勧めします。これにより、各ユーザーは、すべてにアクセスできるパスワードを1つだけ持つことができます。
これにより、いくつかの問題が1つで解決されます。
SUに関するこの回答 によると、ユーザーは、パスワードの有効期限が切れていても、秘密鍵を使用してログインできるはずです。
「鍵」とは、ユーザーが期限切れのパスワードを持っていることだと思います。秘密鍵は、ログインするためのもう1つの方法です。パスワードベースのログインを無効にしない限り(設定はsshd_configでPasswordAuthentication
)、ユーザーはパスワードを使用してログインできると思います。
Sshd_configにはPermitEmptyPasswords
という別の設定があり、デフォルトは「no」です。ユーザーのパスワードを削除した場合、ログインする唯一の方法はユーザーの秘密鍵を使用することです。その時点ではパスワードがないので、おそらく有効期限はありません。
ただし、これはsshに基づいています。コンソールやsuなど、他にも注目すべき領域があります。空のパスワードをどのように処理するのかわかりません。
最後の手段として、いつでもcronにbashスクリプトを配置して、どのユーザーがキーを持っているかを確認し、それに応じて有効期限を設定することができます。また、逆のことも行います。ユーザーがキーを持っていない場合は、有効期限が離れすぎていないことを確認してください。
個人的には、すべてのユーザーに公開鍵と秘密鍵のペアを作成します。
従来のUNIXのpasswd/shadowファイルを使用していますか?もしそうなら、sshd設定でUsePAM
を無効にしてみましたか?
OpenSSH5.8_p1でUsePAM
を無効にすることをテストしましたが、PasswordAuthenticationを通過するユーザーは、アカウントの有効期限が切れると適切に拒否され、パスワードの変更を適切に求められます。キーを使用してログインする場合は何も要求されません(また、UsePAM
が有効になっている場合、キーを使用するときにシステムがパスワードの変更を要求していることを確認できます)。
だからあなたは経由で情報を照会することができます
chage -l username
また、次の方法でシステム全体のデフォルトを上書きできます
chage -I -1 -m 0 -M 99999 -E -1 username
設定できるものはないと思います。ユーザーはパスワードを持っていないので無視してください。