首页/系统/信创系统运维速查/SELinux 布尔值开关管理
安全加固65 条

SELinux 布尔值开关管理

布尔值是策略预留的功能开关:不改策略代码就能放行某类跨域访问(如 Web 访问网络、FTP 读写家目录);setsebool -P 持久化。

信创系统运维速查系统更新于 2026-10-13

SELinux 布尔值是什么

SELinux 布尔值是策略预先留出的开关:策略本身规定进程域能访问哪些类型,某些访问(例如 Web 服务发起网络连接、FTP 读写用户家目录)被设计成可选功能,用布尔值控制。相比改策略模块或打标签,切换布尔值是放行一类访问的最小代价手段,改错也能一键回退。用 getsebool 查看、setsebool 修改,加 -P 才会写进持久配置,不加只对当前运行期有效。

基本信息

适用平台启用 SELinux 的 RHEL 系与信创服务器版
查看单个getsebool 名称
查看全部getsebool -a,配合 grep 过滤关键字
修改setsebool 名称 on|off,加 -P 持久化
看描述semanage boolean -l | grep 名称,含用途说明与当前/默认值

典型使用场景

  • Web 反向代理:httpd_can_network_connect 允许 Web 进程连后端
  • Samba 共享:需要共享非标准目录时开启对应导出开关
  • FTP 服务:允许读写用户家目录或全盘访问
  • 数据库远程连接:允许服务进程发起网络访问
  • 排障对照:AVC 解释提示建议开启某布尔值时,按提示验证是否解决

查看与设置

查看与设置
getsebool -a | grep httpd                        # 列出 Web 相关开关
getsebool httpd_can_network_connect              # 查看单个开关当前值
getsebool -P httpd_can_network_connect on        # -P 写入持久配置
setsebool httpd_can_network_connect on           # 不加 -P:仅当前生效,重启恢复
semanage boolean -l | grep httpd_can_network_connect   # 看描述与默认值
semanage boolean -l -C | head                    # 只看被本地改动过的开关
getsebool -a | grep -c on                        # 统计当前处于开启状态的开关数量

常见开关示例

常见开关示例
setsebool -P httpd_can_network_connect on     # Web 进程可发起网络连接
setsebool -P httpd_read_user_content on       # Web 读取用户家目录内容
setsebool -P ftpd_full_access on              # FTP 完整读写(安全评估后开启)
setsebool -P samba_export_all_rw on           # Samba 全目录读写(谨慎)
setsebool -P nis_enabled on                   # 涉及 NIS 类认证时的兼容开关

常见开关读法

开关作用风险提示
httpd_can_network_connectWeb 进程可连网络放行后 Web 可访问任意后端,按需开启
httpd_read_user_contentWeb 可读家目录内容扩大可读范围,注意数据暴露
ftpd_full_accessFTP 完整读写近似放宽到传统 FTP 行为,权限面大
samba_export_all_rwSamba 全目录读写共享范围失控风险高,优先用标签方案
use_nfs_home_dirs允许 NFS 家目录集约环境常需开启
domain_can_mmap_files进程可 mmap 文件部分应用依赖,按需开启
semanage boolean -l -C 只列出被本地改过的开关,变更审计与复核时用它比翻全量列表高效。
布尔值本质上就是放宽策略边界,开启前确认业务真实需要并记录变更原因,满足安全核查中「变更可追溯」的要求。

易错点

  • setsebool 不加 -P 只对当前有效,重启即失效,临时验证可以,生产变更必须带 -P。
  • 为图省事直接开 samba_export_all_rw 或 ftpd_full_access,把权限边界放到最大,安全核查必然被列为问题项。
  • 开关名凭记忆拼写,setsebool 静默无输出或报错不明确,先用 getsebool -a | grep 关键字确认名称。
  • 开启布尔值后旧连接未重连,仍走旧策略,误判为设置无效。
  • 只开开关不做复核,遗留大量已开启开关没人说得清用途,审计时无法解释。

数据来源与参考

  • man 8 getsebool
  • man 8 setsebool
  • SELinux 官方 Wiki(Booleans)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌