在 Linux 中配置用户密码老化/过期策略 |
在本教程中,您将学习为 Linux 用户配置密码时效和过期策略,以及手动锁定和解锁用户帐户。实现了密码老化和过期功能,以更好地保证用户帐户的安全。
密码验证的工作原理
当用户尝试登录时,系统会在 /etc/shadow 文件中查找该用户的条目,将用户的盐与输入的未加密密码组合起来,并对它们进行加密使用指定的哈希算法。如果结果与加密的哈希值匹配,则用户输入了正确的密码。如果结果与加密的哈希值不匹配,则用户输入了错误的密码,并且登录尝试失败。
你将学会:
- 首次登录时强制更改密码。
- 每 X 天强制更改一次密码。
- 将用户帐户设置为自当天起 X 天后过期。
在开始之前,我将为此练习创建一个用户帐户。
sudo useradd user1
sudo passwd user1
您将通过示例了解其他用户操作。
练习 1:首次登录时强制更改密码
要在用户首次登录时强制更改密码,请使用以下命令:
sudo chage -d 0 user1
如果您以 user1 身份登录,系统将提示您更改密码。
$ ssh user1@localhost
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
user1@localhost's password:
You are required to change your password immediately (administrator enforced)
Last login: Wed Feb 12 06:48:43 2020 from ::1
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user user1.
Current password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
Connection to localhost closed.
您现在可以使用更新后的密码登录。
ssh user1@localhost
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
user1@localhost's password:
Last login: Wed Feb 12 06:48:53 2020 from ::1
[user1@localhost ~]$ exit
logout
Connection to localhost closed.
练习 2:更改用户的密码策略
现在让我们设置一个密码策略,要求每90 天输入一个新密码。
sudo chage -M 90 user1
确认密码策略设置成功。
$ sudo chage -l user1
Last password change : Feb 12, 2020
Password expires : May 12, 2020
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 90
Number of days of warning before password expires : 7
练习 3:将用户帐户设置为在 X 天后过期
我们会将 user1 帐户设置为从当天起 120 天过期。
获取距离当前时间 120 天的日期和时间:
$ date -d "+120 days" +%F
2020-06-11
现在将帐户设置为在上面显示的日期到期。
sudo chage -E 2020-06-11 user1
验证帐户到期日期是否已成功设置:
$ sudo chage -l user1
Last password change : Feb 12, 2020
Password expires : May 12, 2020
Password inactive : never
Account expires : Jun 11, 2020
Minimum number of days between password change : 0
Maximum number of days between password change : 90
Number of days of warning before password expires : 7
练习 4:锁定和解锁用户帐户
锁定帐户可防止用户使用密码对系统进行身份验证。 usermod 命令可用于通过 -L 选项锁定帐户。
sudo usermod -L user1
确认 :
$ su - user1
Password:
su: Authentication failure
稍后可以使用 usermod -U 命令选项解锁该帐户。
sudo usermod -U user1
作为系统管理员,您可以使用单个 usermod 命令锁定帐户并使其过期。这对于离职员工来说是理想的选择。
sudo usermod -L -e 2020-02-20 user1
日期必须以自 1970-01-01 以来的天数形式给出,或采用 YYYY-MM-DD 格式。
练习 5:为所有用户设置密码策略
将所有用户的密码设置为自当前日期起 90 天到期。编辑文件 /etc/login.defs 需要管理权限。
sudo vim /etc/login.defs
将 PASS_MAX_DAYS 设置为 90。
PASS_MAX_DAYS 90
它应该看起来像这样:
您可以配置的所有密码时效参数包括:
- PASS_MAX_DAYS 密码可以使用的最大天数。
- PASS_MIN_DAYS 密码更改之间允许的最短天数。
- PASS_MIN_LEN可接受的最小密码长度。
- PASS_WARN_AGE 密码过期前发出警告的天数。
当您编辑文件/etc/login.defs时,默认密码和帐户到期设置将对新用户有效,但对现有用户无效。
标签:
- 在Linux中配置用户密码老化
- 如何在 Linux 中首次登录时使用户密码过期
- 在Linux中设置用户密码策略
- 在 Linux 上设置用户密码在 X 天后过期
- 如何在 Linux 中锁定用户帐户
- 如何在 Linux 上解锁用户帐户