温馨提示×

centos selinux策略怎么改

小樊
46
2026-09-21 02:01:34
栏目: 智能运维

在 CentOS 中修改 SELinux 策略,通常分为临时调整永久关闭/开启修改布尔值修改文件/端口上下文以及编写自定义策略几种情况。下面按常见使用场景说明。


一、查看 SELinux 状态

getenforce
# Enforcing / Permissive / Disabled

sestatus

二、临时修改 SELinux 模式(重启失效)

# 临时关闭(仅警告不拦截)
setenforce 0

# 临时开启
setenforce 1

三、永久修改 SELinux 状态(需重启)

编辑配置文件:

vi /etc/selinux/config

修改:

SELINUX=enforcing     # enforcing | permissive | disabled
SELINUXTYPE=targeted  # 一般不用改

⚠️ 改为 disabled 后必须重启系统才生效


四、修改 SELinux 布尔值(最常用)

很多服务问题可以通过布尔值解决。

查看布尔值

getsebool -a
getsebool httpd_can_network_connect

临时修改

setsebool httpd_can_network_connect on

永久修改

setsebool -P httpd_can_network_connect on

常见示例:

  • httpd_can_network_connect:Apache 访问网络
  • ftp_home_dir:FTP 访问用户家目录
  • samba_export_all_rw:Samba 读写

五、修改文件/目录 SELinux 上下文

服务访问被拒,通常是上下文不对。

查看上下文

ls -Z /var/www/html

临时修改

chcon -t httpd_sys_content_t /data/www

永久修改(推荐)

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

六、修改端口 SELinux 标签

例如 Nginx 使用 8080:

semanage port -a -t http_port_t -p tcp 8080

查看:

semanage port -l | grep http

七、通过审计日志生成自定义策略(非常实用)

当不知道怎么改时,用 audit2why / audit2allow。

1. 先开启 permissive(或观察日志)

setenforce 0

2. 复现问题

访问服务、执行操作

3. 分析日志

ausearch -m avc -ts recent

4. 自动生成策略

ausearch -m avc -ts recent | audit2allow -M mypolicy
semodule -i mypolicy.pp

八、查看 SELinux 拒绝日志

tail -f /var/log/audit/audit.log
# 或
journalctl -t setroubleshoot

九、常见排错建议

  • Web 服务 403 → 检查 httpd_sys_content_t
  • 端口起不来 → 检查 semanage port
  • 服务连数据库失败 → 检查布尔值
  • 不确定问题 → setenforce 0 先验证

如果你有具体场景(如 Nginx / MySQL / FTP / 自定义服务),可以告诉我,我可以直接给你对应的 SELinux 修改命令。

0