CentOS7关闭SELinux详细步骤,临时与永久关闭
时间:2026-10-20 07:25 作者:emer 分类: 无
前言
CentOS7 默认开启 SELinux,它是一套强制访问控制机制,经常和自行搭建的 Nginx、PHP-FPM、网站目录权限冲突,表现为页面 403、文件写不进去、代理被拦截。生产环境如果不想精细配置策略,最直接的做法就是关闭。本篇区分临时关闭和永久关闭,并给出验证方法。
一、先查看SELinux当前状态
# 查看运行状态
getenforce
# 返回 Enforcing 表示强制开启,Permissive 只记录不拦截,Disabled 已关闭
sestatus
# 也可看配置文件
grep SELINUX= /etc/selinux/config
二、临时关闭(重启后恢复)
# 切换为宽容模式,立即生效但重启复原
setenforce 0
# 验证
getenforce
# 返回 Permissive 即临时关闭成功
setenforce 1 可重新切回 Enforcing。临时关闭适合先定位问题,不想动配置时使用。
三、永久关闭(重启仍生效)
编辑配置文件:
vi /etc/selinux/config
把这一行:
SELINUX=enforcing
改为:
SELINUX=disabled
保存后必须重启服务器才完全生效:
reboot
重启后执行 getenforce 返回 Disabled 即永久关闭成功。
四、两种方式区别速记
| 方式 | 命令/改文件 | 是否立即生效 | 重启后 |
|---|---|---|---|
| 临时 | setenforce 0 | 是 | 恢复为Enforcing |
| 永久 | /etc/selinux/config 改disabled | 否,需重启 | 保持关闭 |
五、常见坑
- 只 setenforce 0 不重启改文件:重启后又自动开启,问题复现;
- 改了配置不重启:getenforce 仍显示 Enforcing,以为没改成功;
- 改错变量名:是
SELINUX=而不是SELINUXTYPE=,后者是策略类型别动; - 急着排查时建议先临时关:验证是不是SELinux拦截,确认后再决定永久关,避免一刀切损失安全性;
- 某些面板/容器环境改完仍受影响,可用
sestatus复核当前模式。
总结
临时关用 setenforce 0,永久关改 /etc/selinux/config 为 disabled 后重启,最后用 getenforce 确认。排查403、写入失败时,SELinux是经常被忽略的一层。
遇到问题加QQ23979811 协助处理