Password

如何檢查 AIX 中的使用者/密碼是否過期?

  • May 9, 2018

我可以檢查使用者是否已過期:

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. $$

chageAIX 上有什麼命令嗎?檢查儲存到期資訊的 /etc/shadow 文件。

更新:似乎有一個 passwdexpired 子常式可以載入並檢查使用者的密碼以確定它是否已過期。但是,它似乎被用作根。

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 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));

引用自:https://unix.stackexchange.com/questions/23923