SELinux在Ubuntu中的状态说明
Ubuntu默认采用AppArmor作为安全模块,并未启用SELinux(Security-Enhanced Linux)。若强制安装SELinux,可能与AppArmor冲突,导致系统不稳定或服务异常。因此,优先建议通过调整AppArmor策略解决问题;若必须使用SELinux,需按以下步骤操作。
使用以下命令检查SELinux是否运行及模式:
getenforce:快速查看当前状态(输出Enforcing表示强制模式,Permissive表示宽容模式,Disabled表示禁用);sestatus:查看详细配置(如策略类型、运行模式)。若SELinux导致服务无法启动(如Apache、MySQL),可临时切换至宽容模式(不阻止操作但记录日志):
sudo setenforce 0
此设置重启后失效,仅用于临时排查问题。
若无需使用SELinux,需修改配置文件永久禁用:
/etc/selinux/config文件:sudo nano /etc/selinux/config
SELINUX=enforcing改为SELINUX=disabled;sudo reboot
注意:禁用后需重新登录,SELinux将不再加载。
若遇到“avc: denied”(访问控制被拒绝)错误,需通过日志定位并修复:
grep -i "denied" /var/log/audit/audit.log
# 或使用更便捷的工具
ausearch -m avc -ts recent
aureport -m avc -ts recent
audit2allow工具自动生成策略规则:grep -i "denied" /var/log/audit/audit.log | audit2allow -M mypolicy
此命令会生成.te(策略源文件)和.pp(编译后的策略包);sudo semodule -i mypolicy.pp
若服务无法访问特定文件(如Web目录),需调整文件的SELinux上下文:
ls -Z /path/to/file
httpd_sys_content_t):sudo chcon -Rv --type=httpd_sys_content_t /var/www/html/test.html
ls -Z /path/to/file
sudo systemctl restart apache2
若需重新启用SELinux,需完成以下步骤:
sudo apt update
sudo apt install selinux-basics selinux-policy-default
sudo selinux-activate
/etc/default/grub,在GRUB_CMDLINE_LINUX_DEFAULT行添加security=selinux,然后更新GRUB:sudo update-grub
sudo reboot
/etc/selinux/config和重要数据;