LabHub
学习 学习路径 课程

LFCS — Linux 基金会认证系统管理员

创建用户与组并挂上策略

在 LabHub 中继续学习

目标

实际创建用户与 group,设置密码策略,并直接从三个账户数据库文件中读取值进行确认。

为什么重要

账户管理既是 LFCS 中容易得分的领域,也是实际工作中最难回滚的操作之一。在 usermod -G 中漏掉一个追加选项,就会清除用户的所有附加 group;如果该用户是管理员,连恢复路径本身都会消失。因此,本实验着重培养每次都使用 idgetent 确认结果的习惯。密码策略也是如此:/etc/shadow 中的过期字段不是日期,而是从 1970 年开始计算的天数。要查看数值并判断“是否正确”,就必须了解这条规则。最后一步创建的孤儿 home directory,在真实服务器上 UID 被复用时,可能成为读取他人文件这一事故的根源。

步骤

  1. 创建 GID 为 4200 的 group lfcsops,以及不指定 GID 的 group lfcsdev
  2. 创建用户 lfcsadm:UID 为 4201,primary group 为 lfcsops,home directory 为 /home/lfcsadm(实际创建),login shell 为 /bin/bash
  3. 创建用户 lfcsdev1,primary group 为 lfcsdev,附加 group 为 lfcsops。然后保持 lfcsadm 的 primary group 不变,向其附加 group 中追加 lfcsdev
  4. 创建服务账户 lfcssvc:UID 小于 1000(system account 范围),使用无法登录的 shell,且没有 home directory。
  5. lfcsdev1 的密码策略设为:最短使用天数 7、最长使用天数 90、过期警告 14 天、账户过期日 2027-12-31
  6. lfcsdev1 设置密码,然后锁定该密码。/etc/shadow 的第二个字段必须以感叹号开头,且后面仍保留 hash。
  7. /root/lfcs-users/report.txt 中写三行:uid=<lfcsadm 의 UID>gid=<lfcsops 의 GID>shadow_max=<lfcsdev1 의 최대 사용 일수>
  8. 创建具有 home directory 的临时账户 lfcstmp,然后保留 home、只删除账户。/home/lfcstmp 必须仍然存在,且其 owner UID 不应再对应任何账户。

参考

创建两个 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。