次のようにして、ユーザーが期限切れになったことを確認できます。
lsuser -f USERNAME | fgrep expires
しかし、ユーザーのパスワードが期限切れになっているかどうかを確認する方法は?問題を引き起こす可能性がある他の「期限切れ」のものはありますか? [これにより、ユーザーはFTP経由でのみサーバーにアクセスでき、パスワードが期限切れになったためログインできず、パスワードを更新するために "passwd"コマンドを実行するためのSSHアクセス権がないため、パスワードを変更できません。 ]
ベストアンサー1
chage
AIXにコマンドがありますか?有効期限情報が保存されている/etc/shadowファイルを確認してください。
更新:ユーザーのパスワードをロードして確認し、パスワードが期限切れになったことを確認するpasswexpiredサブルーチンがあるようです。しかし、ルートとして使用されているようです。
このリンクには、必要な内容に関する素晴らしいドキュメントがあります。
http://www.torontoaix.com/scripting/when_pwd_exp
上記の記事の前半で説明したように、パスワードの有効期限はmaxage属性によって制御されます。
For example:
maxage=0 means never to expire
maxage=2 means will expire in two weeks.
AIXは時間をエポック形式(秒単位)で保存するため、最初に週に数秒があることを確認する必要があります。これは、maxageがパスワードの有効期限の間の時間(週単位)を測定する方法であるためです。 1日は86,400秒に7を掛けると604,800秒になります。したがって、週は604800秒です。見なければならない次のコマンドはpwdadmです。このコマンドは、/etc/security/passwd ファイルを照会します。このファイルには、ユーザーが最後にパスワードを変更した時刻(秒)の値が保持されます。このファイルを調べるか、pwdadmコマンドを使用すると、同じ結果が返されます。このデモでは、ユーザースポールを照会します。
# grep -p "spoll:" /etc/security/passwd
spoll:
password = EvqNjMMwJzXnc
lastupdate = 1274003127
flags = ADMCHG
# pwdadm -q spoll
spoll:
lastupdate = 1274003127
flags = ADMCHG
上記の出力で最後に更新された値を秒単位で確認できます。つまり、パスワードが最後に変更された時間:1274003127
次に、lsuserを使用するか、/etc/security/user質問ファイルを使用して、ユーザーのスポールパスワードが期限切れになるまでの週数を決定できます。
# grep -p "spoll:" /etc/security/user
spoll:
admin = false
maxage = 4
# lsuser -a maxage spoll
spoll maxage=4
上記の出力からわかるように、パスワードが期限切れになるまでの残りの週数は4です。次のタスクは、ユーザーのスポールパスワードが期限切れになるまでの週数に、対応する注意時間(秒)を掛けることです。この場合、4:604800 * 4です。
# expr 604800 \* 4
2419200
次に、パスワードが最後に変更された時刻に秒単位の最大値(604800 * 4)を追加する必要があります。2419200 + 1274003127
# expr 2419200 + 1274003127
1276422327
これで、UNIX時代の秒を現在時刻のより意味のある表現に変換できるようになりました。さまざまなツールを使用できますが、このデモでは gawk 関数と strftime 関数を使用します。
# gawk 'BEGIN {print strftime("%c",'1276422327')}'
Sun Jun 13 10:45:27 BST 2010
上記の計算は、次のパスワードが期限切れになる時間を提供します。これにより、ユーザー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/perl
use POSIX qw(strftime);
$maxage=4;
$last_update = 1274003127
$max_week_seconds = 86400 * $maxage;
print strftime("%C ", localtime($max_week_seconds));