温馨提示×

centos selinux怎么配置

小樊
47
2025-10-13 02:05:59
栏目: 智能运维

1. 检查SELinux当前状态
使用getenforce命令快速查看SELinux当前模式(Enforcing/Permissive/Disabled);sestatus命令可获取更详细的状态信息(如策略类型、是否启用等)。

2. 临时更改SELinux模式
通过setenforce命令临时切换模式(无需重启):

  • setenforce 1:切换至Enforcing模式(强制执行策略,拒绝非法操作并记录日志);
  • setenforce 0:切换至Permissive模式(仅记录违规操作,不阻止执行,用于调试)。

3. 永久更改SELinux模式
编辑/etc/selinux/config文件(系统默认配置文件),修改SELINUX=参数:

  • SELINUX=enforcing:启用强制模式(默认);
  • SELINUX=permissive:启用宽容模式(调试用);
  • SELINUX=disabled:完全禁用SELinux(需重启系统生效)。
    修改后需重启系统使更改生效。

4. 管理SELinux安全上下文
安全上下文(user:role:type:level)是SELinux的核心,决定进程与文件的访问权限。常用命令:

  • 查看上下文ls -Z(查看文件/目录)、ps -Z(查看进程);
  • 临时修改上下文chcon命令(如将/var/www/html/index.html设为httpd_sys_content_t类型,允许Apache访问):
    sudo chcon -t httpd_sys_content_t /var/www/html/index.html 
  • 永久修改上下文semanage fcontext(添加默认上下文规则)+ restorecon(应用规则,如为/opt/webapps目录设置永久上下文):
    sudo semanage fcontext -a -t httpd_sys_content_t "/opt/webapps(/.*)?" sudo restorecon -Rv /opt/webapps # -R递归处理,-v显示详细信息 ```。 

5. 配置SELinux布尔值
布尔值(Boolean)用于快速开关SELinux的特定功能(如允许Apache访问用户家目录)。常用命令:

  • 查看所有布尔值getsebool -a(过滤特定服务如Apache:getsebool -a | grep httpd);
  • 临时修改布尔值setsebool(如启用Apache访问用户家目录):
    sudo setsebool httpd_enable_homedirs 1 
  • 永久修改布尔值:添加-P参数(如永久启用):
    sudo setsebool -P httpd_enable_homedirs 1 ```。 

6. 自定义SELinux策略模块
当遇到SELinux拒绝操作(如Web服务无法访问自定义端口),可通过audit2allow工具从日志生成自定义策略:

  • 查看拒绝日志grep AVC /var/log/audit/audit.log(或用ausearch -m avc);
  • 生成策略模块:将日志重定向至audit2allow(如针对httpd服务的日志):
    sudo ausearch -c 'httpd' --raw | audit2allow -M my_httpd_policy 
  • 加载策略模块semodule -i(如安装生成的my_httpd_policy.pp文件):
    sudo semodule -i my_httpd_policy.pp ```。 

7. 管理SELinux端口标签
若服务需使用非标准端口(如Apache监听8080端口),需将端口添加至对应策略的端口标签:

sudo semanage port -a -t http_port_t -p tcp 8080 # 添加TCP 8080端口至http_port_t类型 sudo semanage port -l | grep http_port_t # 验证端口是否添加成功 ```。 **8. 常见问题排查** - **Web服务403错误**:检查文件上下文是否正确(`ls -Z /var/www/html`),若上下文不符,用`restorecon`恢复默认; - **无法绑定非标准端口**:确认端口是否添加至对应策略(如HTTP用`http_port_t`),用`semanage port`添加; - **SELinux日志分析**:用`sealert -a /var/log/audit/audit.log`生成详细报告,定位拒绝原因。

0