ローカルアカウントのパスワードが何歳であるかを確認するには?

ローカルアカウントのパスワードが何歳であるかを確認するには?

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にある場合、構成によって異なります。)

もちろん、誰かがgetentrootとして実行することを許可した場合(例えばsudoを介して)、不要なパスワードハッシュを見ることができますchage -l。これが発生しないようにしたり、少なくとも困難にするには、getent | cutスクリプトパイプラインを実行して実行のみを許可するスクリプトを作成できます。それ

おすすめ記事