刚接触 Linux 时,很多人会把“用户”和“权限”混在一起。其实,用户与用户组管理是系统安全、文件访问、服务运行的基础功课:谁能登录、谁能读写目录、谁能执行管理命令,背后都离不开它们。🙂
一、先理解用户、UID 和用户组
Linux 并不只靠用户名识别身份,系统真正关注的是数字 ID。每个用户都有 UID,每个用户组都有 GID;用户名和组名更像是给人看的标签。普通用户通常用于日常登录,root 用户拥有最高权限,服务账号则常用于 Nginx、MySQL、Docker 等程序的独立运行。
用户组的作用是把多个用户放到同一个权限集合里。例如,开发团队都需要访问 /data/project 目录,就可以创建一个 dev 组,再把相关人员加入该组,而不是给每个人单独配置权限。这样做更清晰,也更方便后期维护。
二、常见账户文件要知道
Linux 本地用户信息通常分布在几个关键文件中:/etc/passwd 保存用户基本信息,/etc/shadow 保存密码哈希及过期信息,/etc/group 保存组信息,/etc/gshadow 保存组的安全信息。useradd 手册也列出了这些文件及其用途,可参考 useradd 官方手册。
建议新手只查看这些文件,不要直接手工编辑,除非你非常清楚字段含义。日常管理应优先使用 useradd、usermod、groupadd、passwd 等命令。
三、创建用户:从 useradd 开始
创建用户最常用的命令是 useradd。一个实用写法是:sudo useradd -m -s /bin/bash alice。其中 -m 表示创建家目录,-s 指定登录 Shell。useradd 的 -m、-s、-g、-G 等选项在手册中都有说明,可查看 useradd 参数说明。
创建账号后,通常还需要设置密码:sudo passwd alice。passwd 不只是修改密码,也可用于锁定、解锁账号或查看密码状态,具体行为可参考 来源链接 手册。
四、创建和管理用户组
创建用户组可以使用 groupadd,例如:sudo groupadd dev。随后可把用户加入附加组:sudo usermod -aG dev alice。这里的 -aG 很关键,-G 表示设置附加组,-a 表示追加;如果少了 -a,可能会覆盖原有附加组,导致用户失去某些权限。
查看用户所属组可以使用 id alice 或 groups alice。id 会显示 UID、GID 以及附加组信息,非常适合排查“为什么我没有权限访问这个目录”的问题。
五、主组和附加组的区别
每个用户都有一个主组,创建文件时默认会使用该主组作为文件所属组。附加组则用于额外授权。例如 alice 的主组是 alice,同时加入 dev 和 docker 组,那么她日常创建文件可能归属 alice 组,但也能访问 dev 组授权的目录。
修改用户主组可以使用 sudo usermod -g dev alice;添加附加组可以使用 sudo usermod -aG dev alice。usermod 用于修改已有用户账号,其选项说明可参考 usermod 官方手册。
六、删除、锁定与禁用账号
如果用户离职或账号不再使用,不建议第一时间粗暴删除。更稳妥的做法是先锁定账号:sudo passwd -l alice,确认没有业务依赖后,再考虑删除。删除用户可使用 sudo userdel alice;如果还要删除家目录,可加 -r,但执行前务必备份重要数据。
对于服务账号,很多场景下不需要登录 Shell,可以设置为 /usr/sbin/nologin 或 /bin/false,减少误登录风险。创建系统服务账号时,也可以结合 useradd -r,根据发行版习惯创建系统用户。
七、权限配合:用户组不是孤立存在的
用户组管理经常要和文件权限一起使用。比如有一个共享目录 /data/project,可以把目录所属组改为 dev:sudo chown -R root:dev /data/project,再设置组权限:sudo chmod -R 770 /data/project。这样 root 和 dev 组成员可以访问,其他用户不能访问。
如果希望新建文件自动继承目录所属组,可以考虑给目录设置 setgid 位:sudo chmod g+s /data/project。这样团队协作目录会更稳定,避免文件归属混乱。
八、新手常见误区
- 误区一:把所有人都加入 sudo 组。sudo 权限应按需授予,避免普通账号拥有过高权限。
- 误区二:直接编辑 /etc/passwd。除紧急修复外,应优先使用系统命令。
- 误区三:忘记 -aG。给用户追加附加组时,尽量使用 sudo usermod -aG 组名 用户名。
- 误区四:删除用户前不备份家目录。用户目录里可能有脚本、配置、密钥或业务文件。
九、推荐练习步骤
- 创建测试组:sudo groupadd testdev。
- 创建测试用户:sudo useradd -m -s /bin/bash testuser。
- 设置密码:sudo passwd testuser。
- 加入用户组:sudo usermod -aG testdev testuser。
- 检查身份:id testuser。
- 创建共享目录并配置组权限。
- 练习锁定账号、解锁账号和删除测试账号。
总结
Linux 用户和用户组管理的核心思路并不复杂:用户代表“谁”,用户组代表“一类人”,权限决定“能做什么”。入门阶段重点掌握 useradd、passwd、groupadd、usermod、id、userdel 这几类命令,再配合 chown 和 chmod 理解文件权限,就能处理大多数日常运维场景。🛠️
最后给一个实用建议:生产环境中不要只追求“命令能跑”,还要养成记录变更、最小授权、先锁定再删除、先备份再清理的习惯。这样你的 Linux 账号管理会更安全,也更像专业运维人员的做法。