温馨提示×

如何修复ubuntu selinux

小樊
47
2026-09-22 14:57:46
栏目: 智能运维

Ubuntu 上,“修复 SELinux”通常分两种情况:

  1. 你真的在用 SELinux(很少见,通常用于兼容 RHEL 场景)
  2. 你其实想说的是 AppArmor(Ubuntu 默认用的)

下面分别说明。


一、先确认你用的是哪种安全模块

cat /sys/kernel/security/lsm

常见输出:

  • lockdown,yama,apparmor用的是 AppArmor
  • selinux确实启用了 SELinux

二、如果你用的是 AppArmor(Ubuntu 默认)

1. 检查状态

sudo apparmor_status

2. 常见修复方式

重载所有策略

sudo systemctl reload apparmor

重启 AppArmor

sudo systemctl restart apparmor

某个程序被拦截(例如 nginx)

sudo aa-complain /etc/apparmor.d/usr.sbin.nginx

(complain = 只记录不阻止)

重新生成策略

sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx

三、如果你真的启用了 SELinux(较少见)

1. 检查 SELinux 状态

sestatus

可能状态:

  • Disabled
  • Permissive
  • Enforcing

2. 修复常见 SELinux 问题

(1)临时改为宽容模式

sudo setenforce 0

(2)永久修改

编辑:

sudo nano /etc/selinux/config

示例:

SELINUX=permissive
SELINUXTYPE=targeted

修改后需要 重启


3. 修复文件上下文(非常常见)

如果你移动/恢复过文件,可能上下文错了:

sudo restorecon -Rv /var/www

或对整个系统:

sudo fixfiles onboot

4. 查看 SELinux 拒绝日志

sudo ausearch -m AVC -ts recent

或用:

sudo journalctl -t setroubleshoot

5. 自动生成修复策略

sudo sealert -a /var/log/audit/audit.log

四、Ubuntu 上“误装 SELinux”的修复(回到默认)

如果你是误装 SELinux 导致系统异常

sudo apt remove selinux selinux-basics selinux-policy-default
sudo apt install apparmor apparmor-utils

然后:

sudo update-grub
sudo reboot

五、快速判断你该怎么做

情况 建议
Ubuntu 默认系统 用 AppArmor
从 CentOS 迁移 保留或移除 SELinux
系统启动失败 进 recovery → 禁用 SELinux
服务被拒绝 看 audit 日志

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • 具体报错内容
  • 系统起不来 还是 某个服务被拦

我可以直接给你针对性的修复命令

0