跳转至

sudoers 与 AppArmor

权限问题不要一上来使用 chmod 777。更好的方式是确认用户、组、sudo 权限、安全策略和应用访问路径。

sudo 权限查看

# 查看当前用户
whoami
id

# 查看当前用户 sudo 权限
sudo -l

# 查看用户所属组
groups

编辑 sudoers

风险等级: 高

# 安全编辑 sudoers
sudo visudo

# 编辑扩展配置
sudo visudo -f /etc/sudoers.d/<name>

示例:

# 允许 deploy 用户免密重启 nginx
deploy ALL=(root) NOPASSWD: /bin/systemctl restart nginx

建议:

  • 使用 visudo,不要直接用普通编辑器改 /etc/sudoers
  • 命令授权尽量精确到具体命令。
  • 不建议随意配置 NOPASSWD: ALL

AppArmor 状态

# 查看状态
sudo aa-status

# 查看 profile
ls /etc/apparmor.d/

# 投诉模式
sudo aa-complain <profile>

# 强制模式
sudo aa-enforce <profile>

AppArmor 日志

# 查看内核日志
dmesg | grep -i apparmor

# 查看系统日志
journalctl | grep -i apparmor

常见问题

现象 排查
sudo 提示无权限 sudo -l、用户组、sudoers
修改 sudoers 后 sudo 不可用 使用恢复会话修复语法
应用无法读取文件 AppArmor/SELinux、安全中心、文件权限
容器访问挂载目录失败 文件权限、AppArmor profile、SELinux label

高危提醒

  • sudoers 语法错误可能导致管理员无法使用 sudo。
  • 修改 sudoers 前保留 root 会话或准备恢复方式。
  • 不要长期把安全策略切到宽松模式,只用于临时定位问题。