如何檢查 AIX 中的使用者/密碼是否過期?
我可以檢查使用者是否已過期:
lsuser -f USERNAME | fgrep expires
但是如何檢查使用者的密碼是否過期?還有其他“過期”的東西會引起麻煩嗎?
$$ so that user can’t login, because he can only reach a server through FTP and his password expired, and he can’t change it, because he hasn’t got SSH access to give out the “passwd” command to update his password. $$
chage
AIX 上有什麼命令嗎?檢查儲存到期資訊的 /etc/shadow 文件。更新:似乎有一個 passwdexpired 子常式可以載入並檢查使用者的密碼以確定它是否已過期。但是,它似乎被用作根。
這個連結有你需要什麼的優秀文件
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 以 epoch 格式儲存時間(以秒為單位),因此首先您必須確定一周中有多少秒,因為這是 maxage 測量密碼到期之間的時間的方式,即以周數表示的時間。一天有 86400 秒,所以乘以 7 得到 604800。所以一周有 604800 秒。您需要查看的下一個命令是 pwdadm,它依次查詢文件 /etc/security/passwd。此文件保存使用者上次更改密碼時的值(以秒為單位)。查詢文件或使用 pwdadm 命令將返回相同的結果。對於這個展示,讓我們查詢使用者 spoll:
# grep -p "spoll:" /etc/security/passwd spoll: password = EvqNjMMwJzXnc lastupdate = 1274003127 flags = ADMCHG # pwdadm -q spoll spoll: lastupdate = 1274003127 flags = ADMCHG
您可以從上述輸出中看到以秒為單位的 lastupdate 值。也就是說,上次修改密碼的時間:1274003127
接下來,使用 lsuser 或使用 /etc/security/user 查詢文件,您可以確定使用者 spoll 密碼到期前的周數:
# grep -p "spoll:" /etc/security/user spoll: admin = false maxage = 4 # lsuser -a maxage spoll spoll maxage=4
您可以從上面的輸出中看到密碼到期前的周數為 4。接下來的任務是將一周中的秒數乘以使用者 spoll 密碼到期前的周數。在這種情況下,它是 4:604800 * 4
# expr 604800 \* 4 2419200
接下來,您需要在最後一次更改密碼時添加以秒為單位的 maxage 值(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 script-let——–
#!/bin/perl use POSIX qw(strftime); $maxage=4; $last_update = 1274003127 $max_week_seconds = 86400 * $maxage; print strftime("%C ", localtime($max_week_seconds));