菜单

Administrator
发布于 2026-10-12 / 2 阅读
0
0

Linux 进阶 L22:SELinux——最被误解的安全卫士

Linux 进阶 L22:SELinux——最被误解的安全卫士

很多教程第一句就是"先关掉 SELinux"。它名声这么差,是冤枉的。

SELinux 是什么

Linux 本来的权限(rwx)叫自主访问控制:文件主人说了算。SELinux 加了一层强制访问控制:系统定规矩,连 root 都得遵守。

三种模式

getenforce    # 看当前模式

Enforcing:强制执行;Permissive:只记日志不拦截(排错用);Disabled:彻底关掉。

sudo setenforce 0    # 临时切宽容模式
sudo setenforce 1    # 切回强制模式

为什么总"背锅"

Nginx 被 SELinux 拦,正确做法不是关掉,而是发通行证:

sudo ausearch -m avc -ts recent    # 看为什么拦
sudo setsebool -P httpd_can_network_connect 1    # 允许 Nginx 连网络

核心概念:上下文

ls -Z /var/www/html/
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html

Nginx 只能读带 httpd_sys_content_t 标签的文件:

sudo semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"
sudo restorecon -Rv /data/www

排错三步

  1. setenforce 0 切宽容模式,看问题还在不在

  2. ausearch -m avc -ts recent 看拦了啥

  3. 该打标签打标签,该开布尔值开布尔值,再 setenforce 1 切回来

小结

命令

干啥

getenforce

看模式

setenforce 0/1

临时切换

ausearch -m avc

查拦截日志

setsebool -P

开功能开关

restorecon

修复文件标签

SELinux 拦你的时候,先问"怎么给通行证",别上来就"把保安开除"。


评论