AIXでユーザー/パスワードの有効期限が切れていることを確認するにはどうすればよいですか?
AIXにchage
種類のコマンドがありますか? 有効期限情報が格納されている/etc/shadowファイルを確認します。
更新:ロードできるpasswdexpiredサブルーチンがあり、ユーザーのパスワードをチェックして期限切れかどうかを判断するようです。 しかし、それはrootとして使用されるようです。
http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.basetechref%2Fdoc%2Fbasetrf1%2Fpasswdexpired.htm
このリンクには、必要なものの優れたドキュメントがあります
http://www.torontoaix.com/scripting/when_pwd_exp
前述の記事で説明したように、パスワードの有効期限はmaxage属性によって管理されます。
For example:maxage=0 means never to expiremaxage=2 means will expire in two weeks.
AIXは時間をエポック形式で秒単位で格納するため、maxageがパスワードの有効期限の間の時間(週番号)を測定する方法であるため、最初に週の秒数を決定 一日に86400秒があるので、それに7を掛けると604800になります。 だから、週に604800秒があります。 次に確認する必要があるコマンドはpwdadmで、ファイル/etc/security/passwdを照会します。 このファイルは、ユーザーが最後にパスワードを変更したときの値を秒単位で保持します。 ファイルを調べるか、pwdadmコマンドを使用すると、同じ結果が返されます。 このデモでは、ユーザー spollを照会してみましょう:
# grep -p "spoll:" /etc/security/passwdspoll: password = EvqNjMMwJzXnc lastupdate = 1274003127 flags = ADMCHG# pwdadm -q spollspoll: lastupdate = 1274003127 flags = ADMCHG
上記の出力からlastupdate値を秒単位で見ることができます。 つまり、最後にパスワードが変更されたとき:1274003127
次に、lsuserを使用するか、/etc/security/userを使用してファイルを照会すると、ユーザー spollパスワードが期限切れになるまでの週数を判断できます:
# grep -p "spoll:" /etc/security/userspoll: admin = false maxage = 4# lsuser -a maxage spollspoll maxage=4
上記の出力から、パスワードの有効期限の前の週数が4であることがわかります。次のタスクは、ユーザー spollパスワードが期限切れになる前に週の数で週の秒数を乗算することです。 この場合は、次のようになります。4:604800 * 4
# expr 604800 \* 42419200
次に、パスワードが最後に変更された時刻に秒単位のmaxage値(604800*4)を追加する必要があります:2419200 + 1274003127
# expr 2419200 + 12740031271276422327
UNIXエポックからの秒数を、より意味のある現在の時刻表示に変換できるようになりました。 さまざまなツールを使用できますが、このデモではstrftime関数でgawkを使用します:
# gawk 'BEGIN {print strftime("%c",'1276422327')}'Sun Jun 13 10:45:27 BST 2010
上記の計算は、次のパスワードの時間を与えますexpiry.Soこれで、ユーザー spollのパスワードが最後に変更されたことがわかります(pwdadmコマンドから):
# gawk 'BEGIN {print strftime("%c",'1274003127')}'Sun May 16 10:45:27 BST 2010
そして、それは上で期限切れになること:
Sun Jun 13 10:45:27 BST 2010
——————Perlスクリプト-let——–
#!/bin/perluse POSIX qw(strftime);$maxage=4; $last_update = 1274003127$max_week_seconds = 86400 * $maxage;print strftime("%C ", localtime($max_week_seconds));