Ansible 2.9.27とPython 2.7.5がインストールされているRHEL 7.9環境で知りたいです。
- ローカルルートアカウントのパスワードは何日ですか?
- 最後のパスワード変更後数日経過しましたか?
ここでは、次のように最後のパスワード変更日を確認できます。
sudo chage -l root
Last password change : Jan 01, 1970
...
- Ansibleで最後の変更日と今日の違いを計算する方法は?
ベストアンサー1
RHELには利用可能なものが1つあるため、getent
そこからパスワード使用期間データを取得できます。 3番目のフィールドは1970年以降の日数です。今日の日数は、エポック以降の現在時刻(秒)を86400で割って切り取れば分かります。 (まあ、おそらくタイムゾーンオフセットを与えたり減算したりすることもできます。シャドウツールがベースかどうかはわかりません。地元のタイムゾーンまたはUTCベースです。 )
# user=ilkkachu
# age=$(( $(date +%s) / 86400 - $(getent -- shadow "$user" |cut -d: -f3) ))
# printf "age of user %s's password is %d days\n" "$user" "$age"
age of user ilkkachu's password is 1444 days
getent
ただし、必要な情報を取得するにはroot権限が必要な場合があります。 (これはのデータに対応しますが、/etc/shadow
データがたとえばLDAPにある場合、構成によって異なります。)
もちろん、誰かがgetent
rootとして実行することを許可した場合(例えばsudoを介して)、不要なパスワードハッシュを見ることができますchage -l
。これが発生しないようにしたり、少なくとも困難にするには、getent | cut
スクリプトパイプラインを実行して実行のみを許可するスクリプトを作成できます。それ。