使用 chage
和 usermod
修改用户密码有效期和组 membership
在本步骤中,你将管理更高级的用户属性。你将学习如何使用 chage
控制密码过期来强制执行密码安全策略,以及如何使用 usermod
管理用户的组 membership 来控制其权限和访问权限。
首先,让我们检查 student1
账户的密码有效期信息。chage
(change age) 命令配合 -l
(list) 标志可以显示这些详细信息。
sudo chage -l student1
输出将显示账户的默认设置。日期将对应于你创建用户的日期。
Last password change : Dec 08, 2024
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
为了安全起见,定期要求用户更改密码是一个好习惯。让我们设置一个策略,要求密码每 90 天更改一次 (-M 90
),每 7 天只能更改一次 (-m 7
),并且用户在密码过期前 14 天会收到警告 (-W 14
)。
sudo chage -M 90 -m 7 -W 14 student1
现在,再次查看设置以确认你的更改:
sudo chage -l student1
输出将反映新策略:
Last password change : Dec 08, 2024
Password expires : Mar 08, 2025
Password inactive : never
Account expires : never
Minimum number of days between password change : 7
Maximum number of days between password change : 90
Number of days of warning before password expires : 14
接下来,让我们修改组 membership。用户属于一个主组,并且可以属于多个次要(或补充)组。你可以使用 id
命令查看用户的组。
id student1
uid=5001(student1) gid=5001(student1) groups=5001(student1)
这表明 student1
的主组是 student1
(gid=5001),并且它尚未加入任何次要组。
让我们创建一个名为 developers
的新组,并将 student1
添加到其中。首先,创建组:
sudo groupadd developers
现在,使用 usermod
将 student1
添加到这个新组。-aG
标志至关重要:-G
指定次要组,而 -a
将用户追加到组中,而不会将其从其他组中移除。
sudo usermod -aG developers student1
再次检查用户的组:
id student1
输出现在包括 developers
组:
uid=5001(student1) gid=5001(student1) groups=5001(student1),1002(developers)
如果忘记了 -a
标志会怎样?让我们创建另一个组 testers
,并仅使用 -G
将 student1
添加到其中。
sudo groupadd testers
sudo usermod -G testers student1
现在再检查一次组:
id student1
uid=5001(student1) gid=5001(student1) groups=5001(student1),1003(testers)
请注意,student1
不再属于 developers
组。使用 usermod -G
而不使用 -a
会用新列表 替换 所有现有的次要组。要让用户同时属于这两个组,你必须列出所有组 (-G developers,testers
) 或使用追加标志。让我们通过正确地将 student1
添加回 developers
组来修复此问题。
sudo usermod -aG developers student1
验证最终状态。用户现在应该同时属于这两个组。
id student1
uid=5001(student1) gid=5001(student1) groups=5001(student1),1003(testers),1002(developers)