Linux用户权限与sudo
Linux 权限体系围绕用户、组、文件权限、sudo、ACL 和安全模块展开。权限设计直接关系到系统安全和服务稳定性。
# 1. 学习目标
- 理解用户、组、rwx、SUID、SGID、Sticky Bit 和 sudo。
- 能排查 Permission denied、服务用户权限和文件属主问题。
- 能设计服务账号和最小权限模型。
# 2. 知识框架
Linux用户权限与sudo
├─ 入门:建立术语、对象和日常操作的直觉
├─ 进阶:理解机制、边界和跨平台差异
└─ 专家:能排障、能设计、能阅读实现和研究材料
Linux 权限判断通常从“当前进程是谁”开始,再看目标文件属主、属组、权限位、ACL、挂载参数和安全模块。
# 3. 核心概念
| 主题 | 说明 | 工程关注 |
|---|---|---|
| rwx | 读、写、执行权限位 | 文件和目录语义不同 |
| sudo | 允许授权用户以其他身份执行命令 | 审计、最小授权 |
| SUID/SGID | 执行文件时临时获得文件属主或属组权限 | 提权风险 |
| ACL | 比传统权限更细的访问控制列表 | 复杂共享目录权限 |
# 4. 机制与实践
- 服务单独创建系统用户,文件权限只开放必要目录。
- sudoers 配置用 visudo 修改,避免语法错误锁死管理权限。
- 权限问题同时检查文件、父目录、运行用户和安全模块日志。
# 5. 常用命令与工具
| 命令或工具 | 作用 | 使用建议 |
|---|---|---|
id user | 查看用户和组 | 确认权限主体 |
namei -l path | 逐级查看路径权限 | 定位父目录权限不足 |
sudo -l | 查看当前用户 sudo 权限 | 审计授权范围 |
# 6. 常见误区
- chmod 777 解决问题:会扩大攻击面,掩盖真正的属主或目录权限问题。
- 只改文件不改父目录:访问文件需要路径上每级目录具备执行权限。
- 忽略 sudo 环境差异:sudo 后 PATH、HOME、环境变量可能变化。
# 7. 进阶研究方向
- 学习 Linux capability 如何拆分 root 权限。
- 研究 PAM、sudoers、SELinux/AppArmor 的配合。
- 设计一套服务账号和密钥权限规范。
# 8. Tips 快问快答
Q:目录的执行权限是什么意思?
A:目录执行权限表示可以进入或穿越该目录。
Q:sudo 和 su 有什么区别?
A:sudo 是按规则临时授权执行命令,su 是切换到另一个用户会话。
Q:为什么不建议 chmod 777?
A:它允许所有用户读写执行,容易造成数据泄漏、篡改和提权风险。
# 9. 总结
Linux 权限不是只有 chmod。真正可靠的权限治理要从身份、目录链路、sudo 授权、ACL 和安全模块一起考虑。
上次更新: 2026/06/25, 10:02:19