
🐧 Linux 从零到实战 · 第 3 阶段 · 第 3.1 章:用户与用户组管理
🎨 核心概念可视化 · AI 生成1. 核心概念
在 Linux 系统中,为了保证安全性和多用户协作,所有对系统资源的访问都必须经过身份验证。
1.1 用户 (User)
每个用户在系统中都有一个唯一的 UID (User ID)。 - Root 用户:UID 为 0,拥有系统的最高权限,可以执行任何操作。 - 普通用户:UID 通常从 1000 开始(在 Ubuntu 等发行版中),权限受限,只能操作自己的家目录。
1.2 用户组 (Group)
用户组用于简化权限管理。与其为每个用户单独设置权限,不如将用户放入一个组,并给该组分配权限。 - 每个用户有一个 主组 (Primary Group),创建新文件时默认属于该组。 - 用户可以同时属于多个 附加组 (Supplementary Groups)。 - 每个组有唯一的 GID (Group ID)。
Linux 用户与用户组的隶属关系示意图
1.3 权限提升:sudo 机制
为了避免直接使用 root 账户(风险极高),Linux 引入了 sudo (superuser do) 机制。它允许经过授权的普通用户以 root 身份执行特定命令。
sudo 机制权限提升逻辑流程
2. 核心命令与实操
2.1 用户管理
创建用户:useradd
useradd 是底层命令,用于创建新账户。
- 基础用法:sudo useradd username
- 推荐用法(创建家目录并指定 Shell):
sudo useradd -m -s /bin/bash username
- -m:创建家目录 /home/username
- -s:指定登录后使用的 Shell(默认为 /bin/sh,建议设为 /bin/bash)
用户账户的创建与删除管理
修改密码:passwd
新用户创建后默认是锁定状态,必须设置密码才能登录。
- 为自己修改密码:passwd
- 为其他用户修改密码 (需 sudo):sudo passwd username
修改用户信息:usermod
- 将用户添加到附加组:
sudo usermod -aG groupname username -a(append):追加,不覆盖原有的附加组。-G(groups):指定指定附加组。- ⚠️ 极其重要:如果漏掉
-a,用户将从所有其他附加组中被移除!
删除用户:userdel
- 仅删除用户账户:
sudo userdel username - 同时删除用户家目录及邮件池:
sudo userdel -r username
2.2 用户组管理
创建用户组:groupadd
- 基础用法:
sudo groupadd groupname
查看用户信息与组信息
- 查看当前用户 ID 和组 ID:
id - 输出示例:
uid=1000(alice) gid=1000(alice) groups=1000(alice),4(adm),27(sudo)... - 查看当前登录用户名:
whoami
将用户添加到附加组的可视化过程
2.3 sudo 权限配置
管理 sudoers 文件:visudo
永远不要直接使用 vim /etc/sudoers 修改权限,必须使用 visudo。visudo 在保存前会检查语法,防止因为一个拼写错误导致所有人都无法使用 sudo。
visudo 的语法校验机制 vs 直接编辑的风险
- 配置语法:
username ALL=(ALL:ALL) ALL - 含义:用户
username可以以任何用户身份在任何主机上执行任何命令。
3. 避坑指南
| 风险点 | 后果 | 解决方案 |
|---|---|---|
| 滥用 Root | 误删 / 或修改关键配置导致系统崩溃 |
日常使用普通用户 + sudo |
usermod 忘记 -a |
用户被踢出 sudo 组,失去管理权限 |
始终使用 usermod -aG |
useradd 忘记 -m |
用户登录后无家目录,无法保存配置 (如 .bashrc) |
检查 /etc/login.defs 或显式使用 -m |
| 直接编辑 /etc/sudoers | 语法错误导致整个系统无法提权 | 必须使用 visudo |
4. 课后练习
- 创建实验用户:创建一个名为
dev_user的用户,指定其 Shell 为/bin/bash并创建家目录。 - 权限升级:将
dev_user创建一个名为developers的组,将该用户加入该组,并赋予其sudo权限(在 Ubuntu 中通常是将其加入sudo组)。