CentOS7 关闭SELinux详细步骤,临时+永久关闭

刚装完 CentOS 7,部署网站后发现目录权限明明对了,但还是 403 或文件访问被拒绝,十有八九是 SELinux 在搞鬼。这玩意儿对新手极不友好,建议直接关掉。

1. 先查看 SELinux 状态

getenforce

输出有三种可能:

  • Enforcing:强制模式(正在生效)
  • Permissive:宽容模式(只警告不拦截)
  • Disabled:已关闭

或者用详细命令:

sestatus

2. 临时关闭(重启后失效)

setenforce 0

执行完再 getenforce 确认一下,应该变成 Permissive。

注意:临时关闭不需要重启服务器,但重启后会恢复原来的状态。

3. 永久关闭(重启后依然生效)

编辑配置文件:

vi /etc/selinux/config

找到这一行:

SELINUX=enforcing

改成:

SELINUX=disabled

保存退出后,必须重启服务器才能生效:

reboot

4. 为什么要关 SELinux?

SELinux 是 Linux 的强制访问控制机制,理论上更安全,但对新手来说:

  • 权限配对了还是访问不了
  • Nginx 代理 PHP 一直 403
  • 上传文件后权限不对
  • 各种莫名其妙的拒绝访问

生产环境如果不是特别懂,建议直接关掉,省心。真要讲究安全,用防火墙就够了。

5. 常见坑

坑1:改了配置文件没重启
很多人改完 /etc/selinux/config 就以为关了,其实必须重启才生效。

坑2:setenforce 报错
如果 SELinux 本来就是 Disabled 状态,执行 setenforce 0 会报错,正常。

坑3:查看日志
如果想知道 SELinux 拦截了什么,可以看日志:

tail -f /var/log/audit/audit.log

遇到服务器、Nginx、MySQL 报错,可以加微信远程协助排查问题。


emer 发布于  2026-10-4 19:26 

CentOS7 firewalld开放80、443端口永久生效命令

CentOS 7 默认使用 firewalld 作为防火墙管理工具。很多新手搭建网站后发现外网访问不了,90% 都是因为 80、443 端口没开放。下面是完整的操作步骤,照抄就能用。

1. 先确认防火墙状态

systemctl status firewalld

如果显示 active (running) 说明防火墙正在运行,需要继续下面的操作。如果是 inactive 那就是防火墙没开,问题不在这里。

2. 开放 80 端口(HTTP)

firewall-cmd --zone=public --add-port=80/tcp --permanent

参数说明:

  • --zone=public:作用域为公共区域
  • --add-port=80/tcp:开放 80 端口,TCP 协议
  • --permanent:永久生效,不加这个重启服务器就失效了

3. 开放 443 端口(HTTPS)

firewall-cmd --zone=public --add-port=443/tcp --permanent

4. 一次性开放多个端口

如果需要同时开放多个端口,可以一条命令搞定:

firewall-cmd --zone=public --add-port=80/tcp --add-port=443/tcp --permanent

5. 重载防火墙使配置生效

⚠️ 重点:开放端口后必须重载,否则不生效!

firewall-cmd --reload

6. 查看已开放的端口

确认一下端口有没有真正开放成功:

firewall-cmd --list-ports

正常会输出类似:

80/tcp 443/tcp

7. 常用其他端口开放命令

SSH 端口(默认22,建议改成别的):

firewall-cmd --zone=public --add-port=22/tcp --permanent

MySQL 端口(如果需要远程连接数据库):

firewall-cmd --zone=public --add-port=3306/tcp --permanent

Redis 端口:

firewall-cmd --zone=public --add-port=6379/tcp --permanent

8. 移除/关闭已开放的端口

如果某个端口不需要了,想关掉:

firewall-cmd --zone=public --remove-port=8080/tcp --permanent
firewall-cmd --reload

常见坑

  1. 加了 --permanent 还是不生效?
    忘记 firewall-cmd --reload 了。永久配置写入后必须重载才会加载到运行时。

  2. 端口开放了还是访问不了?
    检查云服务商的安全组(阿里云/腾讯云/华为云都有这个东西),防火墙和安全组是两层,都要开。

  3. firewalld 命令找不到?
    CentOS 7 最小化安装可能没装,执行 yum install firewalld -y 安装。

  4. 临时开放端口(重启就失效)
    去掉 --permanent 参数就是临时开放,重启或 reload 后自动关闭。


遇到服务器、Nginx、MySQL 报错,可以加微信远程协助排查问题。


emer 发布于  2026-10-4 19:22