一、Linux 权限基础核心概念
1. 权限三元组(User/Group/Other)
2. 权限表示法
| 数字法 | 符号法 | 含义 |
|---|---|---|
| 0 | --- | 无权限 |
| 4 | r-- | 仅读取 |
| 5 | r-x | 读取+执行 |
| 7 | rwx | 完全控制 |
示例命令:
bash
复制
chmod 755 script.sh # 所有者:rwx,组和其他:r-x
chmod u+x,go-w file.txt # 所有者添加执行,组和其他移除写入
二、关键权限管理工具与实战
1. chmod:权限修改
-
递归修改目录:
chmod -R 755 /project -
符号法高级操作:
bash 复制 chmod a+r public.txt # 所有用户可读 chmod g-w secure.conf # 移除组的写入权限
2. chown:所有权控制
bash
复制
sudo chown alice:developers app.py # 变更所有者和组
sudo chown -R www-data:www-data /var/www # 递归修改Web目录
3. umask:默认权限屏蔽
-
查看当前值:
umask→ 输出0022(目录默认权限:755,文件:644) -
修改默认规则:
bash 复制 umask 0007 # 目录:770,文件:660(组内完全共享)
三、高级权限机制深度解析
1. 特殊权限标志
| 标志 | 作用 | 设置方法 |
|---|---|---|
| SUID | 以文件所有者身份执行 | chmod u+s |
| SGID | 继承目录的组身份 | chmod g+s |
| Sticky | 仅所有者可删除文件 | chmod +t |
示例:
bash
复制
sudo chmod u+s /usr/bin/passwd # 允许普通用户修改密码
sudo chmod g+s /shared-team # 新建文件自动继承父目录组
sudo chmod +t /tmp # 防误删(经典案例)
2. ACL(访问控制列表)
-
启用ACL:在
/etc/fstab中添加acl挂载选项 -
管理命令:
bash 复制 setfacl -m u:bob:rwx /data # 赋予bob用户rwx权限 setfacl -m g:audit:r-- /logs # 审计组只读访问日志 getfacl /data # 查看详细ACL规则
四、Sudo 权限安全强化策略
1. 精细化配置 /etc/sudoers
bash
复制
# 允许开发者组无密码重启服务
%developers ALL=(root) NOPASSWD: /bin/systemctl restart apache2
# 禁止普通用户使用危险命令
User_Alias RESTRICTED = alice,bob
RESTRICTED ALL = !/bin/rm -rf /, !/bin/dd
2. 审计与监控
五、权限故障排查与安全实践
1. 常见问题诊断
bash
复制
# 1. 权限拒绝(Permission denied)
ls -l /path # 检查权限三元组
getfacl /path # 验证ACL规则
# 2. 无法删除文件(Sticky bit生效)
ls -ld /tmp # 确认目录有+t标志
# 3. SUID/SGID安全风险
find / -perm /4000 -ls # 扫描所有SUID文件
find / -perm /2000 -ls # 扫描所有SGID文件
2. 安全加固原则
-
最小权限原则:进程/用户仅授予必要权限
-
定期审计:使用
lynis或tiger扫描系统 -
敏感文件保护:
bash 复制 sudo chmod 700 ~/.ssh sudo chattr +i /etc/passwd # 不可修改标志(慎用!)
六、附录:常用命令速查表
| 命令 | 作用 |
|---|---|
stat file | 查看详细权限/属性 |
chmod --reference=ref_file target | 复制参考文件权限 |
chown -h | 修改符号链接本身的所有权 |
restorecon | 修复SELinux上下文(若启用) |
最佳实践提示:
- 生产环境慎用
chmod -R 777,推荐750(目录)和640(文件)- 对关键配置文件(如
/etc/sudoers)使用visudo编辑,避免语法错误导致系统锁定- 结合
AppArmor或SELinux实现强制访问控制(MAC)
此指南覆盖了Ubuntu 24.04权限管理的核心场景,兼顾安全性与实操性,可根据需求扩展ACL策略或容器化环境(如Snap/Flatpak)的权限隔离配置。