创建用户与组并挂上策略
目标
实际创建用户与 group,设置密码策略,并直接从三个账户数据库文件中读取值进行确认。
为什么重要
账户管理既是 LFCS 中容易得分的领域,也是实际工作中最难回滚的操作之一。在 usermod -G 中漏掉一个追加选项,就会清除用户的所有附加 group;如果该用户是管理员,连恢复路径本身都会消失。因此,本实验着重培养每次都使用 id 和 getent 确认结果的习惯。密码策略也是如此:/etc/shadow 中的过期字段不是日期,而是从 1970 年开始计算的天数。要查看数值并判断“是否正确”,就必须了解这条规则。最后一步创建的孤儿 home directory,在真实服务器上 UID 被复用时,可能成为读取他人文件这一事故的根源。
步骤
- 创建 GID 为 4200 的 group
lfcsops,以及不指定 GID 的 grouplfcsdev。 - 创建用户
lfcsadm:UID 为 4201,primary group 为lfcsops,home directory 为/home/lfcsadm(实际创建),login shell 为/bin/bash。 - 创建用户
lfcsdev1,primary group 为lfcsdev,附加 group 为lfcsops。然后保持lfcsadm的 primary group 不变,向其附加 group 中追加lfcsdev。 - 创建服务账户
lfcssvc:UID 小于 1000(system account 范围),使用无法登录的 shell,且没有 home directory。 - 将
lfcsdev1的密码策略设为:最短使用天数 7、最长使用天数 90、过期警告 14 天、账户过期日2027-12-31。 - 为
lfcsdev1设置密码,然后锁定该密码。/etc/shadow的第二个字段必须以感叹号开头,且后面仍保留 hash。 - 在
/root/lfcs-users/report.txt中写三行:uid=<lfcsadm 의 UID>、gid=<lfcsops 의 GID>、shadow_max=<lfcsdev1 의 최대 사용 일수>。 - 创建具有 home directory 的临时账户
lfcstmp,然后保留 home、只删除账户。/home/lfcstmp必须仍然存在,且其 owner UID 不应再对应任何账户。
参考
- 根据发行版不同,
useradd可能不会自动创建 home directory。即使getent passwd中显示路径,该目录也可能不存在。 - 可以使用
chpasswd非交互式设置密码。 /etc/shadow的第 3、8 个字段不是日期,而是从 1970-01-01 起计算的天数。- 常见错误:添加附加 group 时漏掉追加选项,会替换全部现有附加 group。
创建两个 group
创建 GID 为 4200 的 group lfcsops,以及不指定 GID 的 group lfcsdev。
创建 group 的命令有直接指定 GID 的选项。一个明确指定,另一个交给系统选择。
指定 UID、home、shell 的用户
创建用户 lfcsadm:UID 为 4201,primary group 为 lfcsops,home directory 为 /home/lfcsadm(实际创建),login shell 为 /bin/bash。
useradd 分别使用不同选项接收 UID、primary group、home 路径和 login shell。注意还有一个单独选项用于实际创建 home directory。
添加附加 group
创建用户 lfcsdev1,primary group 为 lfcsdev,附加 group 为 lfcsops。然后保持 lfcsadm 的 primary group 不变,向其附加 group 中追加 lfcsdev。
要保留现有附加 group 并继续添加,需要使用追加选项。遗漏后,整个列表都会被替换。请用 id 确认结果。
无法登录的服务账户
创建服务账户 lfcssvc:UID 小于 1000(system account 范围),使用无法登录的 shell,且没有 home directory。
创建 system account 的选项和不创建 home 的选项彼此独立。shell 请指定为拒绝登录的路径。
密码过期策略
将 lfcsdev1 的密码策略设为:最短使用天数 7、最长使用天数 90、过期警告 14 天、账户过期日 2027-12-31。
最短、最长、警告、账户过期分别使用不同选项。用人类可读的日期指定过期日,工具会将其转换为内部格式。
设置密码后锁定
为 lfcsdev1 设置密码,然后锁定该密码。/etc/shadow 的第二个字段必须以感叹号开头,且后面仍保留 hash。
有工具可以非交互式输入密码。锁定不会删除 hash,而是在前面加上标记,因此只有先设置密码,锁定才有意义。
从账户数据库读取值
在 /root/lfcs-users/report.txt 中写三行:uid=<lfcsadm 의 UID>、gid=<lfcsops 의 GID>、shadow_max=<lfcsdev1 의 최대 사용 일수>。
三个值分别位于不同文件的不同字段。字段以冒号分隔,请数出相应字段编号并提取。
只删除账户并保留 home
创建具有 home directory 的临时账户 lfcstmp,然后保留 home、只删除账户。/home/lfcstmp 必须仍然存在,且其 owner UID 不应再对应任何账户。
删除命令有一个连同 home 一起删除的选项。本次不能使用它。请检查残留目录的 owner。