Linux 发行版通常提供 shadow 工具套件中的账户工具,但默认值和更高层封装程序各不相同。更改本地账户前,请确认它不是集中管理的,阅读该命令的本地手册,并保留恢复路径。
本课中的命令会改变认证和所有权状态。只能在获准的可丢弃环境中练习,不要在生产主机上练习。
用户管理 · 第 6 课
学习如何使用明确选项创建、修改、保护、验证和删除本地账户。
Linux 发行版通常提供 shadow 工具套件中的账户工具,但默认值和更高层封装程序各不相同。更改本地账户前,请确认它不是集中管理的,阅读该命令的本地手册,并保留恢复路径。
本课中的命令会改变认证和所有权状态。只能在获准的可丢弃环境中练习,不要在生产主机上练习。
useradd 会使用命令选项和站点默认值创建本地账户。使用以下命令检查编译和配置的默认值:
$ useradd -D
/etc/default/useradd、/etc/login.defs 和骨架目录内容等文件可能影响行为,但其作用因发行版而异。系统可能提供更高层的 adduser 命令,但其界面并未在所有 Linux 系统中标准化。
在受控环境中,应指定重要属性,而不是依赖未知默认值:
$ sudo useradd -m -s /bin/bash -c "Bob Example" bob
-m 请求创建主目录。-s /bin/bash 在确认该路径获准且已安装后选择登录 shell。-c 提供 GECOS/注释字段。新账户通常要设置可用的本地密码后才能认证,但确切的初始密码和锁定状态取决于本地工具与策略。应验证记录,而不是想当然:
$ getent passwd bob
$ sudo passwd -S bob
$ id bob
哪个 useradd 选项会明确请求创建新账户的主目录?
普通用户使用交互式命令更改自己的本地密码:
$ passwd
获准的管理员可以设置另一个本地账户的密码:
$ sudo passwd bob
只能在受保护的提示中输入密码,不要把密码放入命令参数、shell 历史、课程笔记或聊天。PAM 策略可能拒绝弱密码或重复使用的密码。目录服务管理的账户可能需要其他工具。
哪个命令通常让当前用户通过交互式提示更改自己的密码?
usermod 会更改本地账户字段。例如:
$ sudo usermod -s /bin/zsh bob
$ sudo usermod -d /srv/home/bob -m bob
$ sudo usermod -aG developers bob
移动主目录前,应验证目标、所有权、可用空间、正在运行的进程、挂载和服务。对于附加组,-aG 表示追加到当前列表。使用 -G 而省略 -a 会替换整个附加组列表,并可能意外移除访问权限。
组更改通常影响新的登录会话,而不是已在旧凭据集合下运行的进程。
哪个命令会把 bob 加入附加组 developers,而不替换他的其他附加成员身份?
管理员可以使用 passwd -l USER 锁定本地密码哈希,并用 passwd -S USER 检查状态。只有审查锁定原因并确认仍有有效哈希后,才能使用 passwd -u USER 解锁。
密码锁定不一定会阻止 SSH 密钥、令牌、计划任务、已经运行的进程或服务特定认证。要全面禁用账户,应先定义威胁和访问路径,再应用协调策略,其中可能包括账户过期、登录 shell、服务访问、密钥和会话终止。
passwd -l bob 主要锁定什么?
普通 userdel bob 会删除本地账户记录,但通常会保留主目录。userdel -r bob 还会尝试删除主目录和邮件 spool,因此属于破坏性操作。
执行任何删除前:
getent passwd bob 和 id bob 确认准确账户。userdel -r 不保证删除配置主目录和邮件位置之外的文件。账户删除也可能留下文件的数值所有权、数据库权限、应用身份和远程目录记录。
与普通 userdel bob 相比,常见的 userdel -r bob 还会请求删除什么?
要在隔离环境中练习账户生命周期,可以尝试以下动手实验:
课程已完成
现在,你可以用明确范围和验证来管理本地账户。
创建前审查 useradd 默认值。
明确请求主目录、shell 和元数据设置。
只通过受保护的提示更改密码。
追加附加组,而不替换现有列表。
执行破坏性删除前盘点身份依赖关系。