zhjn0 2020-01-14
密码强制策略对所有操作系统和应用程序都是通用的。如果要在 Linux 上实现密码强制策略,请参阅以下文章。
默认情况下,大多数公司都会强制执行密码强制策略,但根据公司的要求,密码的时间周期会有所不同。通常每个人都使用 90 天的密码周期。用户只会在他们使用的一些服务器上更改密码,而不会在他们不经常使用的服务器上更改密码。
特别地,大多数团队忘记更改服务帐户密码,这可能导致日常工作的中断,即使他们配置有基于 SSH 密钥的身份验证。如果用户帐户密码过期,基于SSH密钥的身份验证和 cronjob 将不起作用。
为了避免这种情况,我们创建了一个 shell 脚本来向你发送 10 天内到期的用户帐户列表。
本教程中包含两个 bash 脚本可以帮助你收集系统中用户到期天数的信息。
此脚本将帮助你在终端上检查 10 天内到期的用户帐户列表。
# vi /opt/script/user-password-expiry.sh
#!/bin/sh /tmp/user-expiry-1.txt /tmp/user-expiry.txt echo "-------------------------------------------------" echo "UserName The number of days the password expires" echo "-------------------------------------------------" for usern in u1 u2 u3 u4 do today=$(date +%s) userexpdate=$(chage -l $usern | grep 'Password expires' |cut -d: -f2) passexp=$(date -d "$userexpdate" "+%s") exp=`expr \( $passexp - $today \)` expday=`expr \( $exp / 86400 \)` echo "$usern $expday" >> /tmp/user-expiry.txt done cat /tmp/user-expiry.txt | awk '$2 <= 10' > /tmp/user-expiry-1.txt cat /tmp/user-expiry-1.txt | column -t
将文件 user-password-expiry.sh
设置为可执行的 Linux 文件权限。
# chmod +x /opt/script/user-password-expiry.sh
你将得到如下输出,但用户与天数可能不同。
# sh /opt/script/user-password-expiry.sh ------------------------------------------------- UserName The number of days the password expires ------------------------------------------------- u1 -25 u2 9 u3 3 u4 5
此脚本将发送一封包含 10 天内到期的用户帐户列表的邮件。
# vi /opt/script/user-password-expiry-mail.sh
#!/bin/sh SUBJECT="Information About User Password Expiration on "`date`"" MESSAGE="/tmp/user-expiry.txt" MESSAGE1="/tmp/user-expiry-1.txt" TO="[email protected]" echo "-------------------------------------------------" >> $MESSAGE1 echo "UserName The number of days the password expires" >> $MESSAGE1 echo "-------------------------------------------------" >> $MESSAGE1 for usern in u1 u2 u3 u4 do today=$(date +%s) userexpdate=$(chage -l $usern | grep 'Password expires' |cut -d: -f2) passexp=$(date -d "$userexpdate" "+%s") exp=`expr \( $passexp - $today \)` expday=`expr \( $exp / 86400 \)` echo "$usern $expday" >> $MESSAGE done cat $MESSAGE | awk '$2 <= 10' >> $MESSAGE1 mail -s "$SUBJECT" "$TO" < $MESSAGE1 rm $MESSAGE rm $MESSAGE1
将文件 user-password-expiry-mail.sh
设置为可执行的 Linux 文件权限。
# chmod +x /opt/script/user-password-expiry-mail.sh
最后,添加一个 cronjob 去自动执行脚本。每天早上 8 点运行一次。