getenforce直接显示SELinux当前运行模式(Enforcing/Permissive/Disabled),是轻量可靠的实时状态快照;sestatus则同时展示当前模式与配置文件设定值,避免重启后配置不生效;seinfo需加参数才输出策略元数据,否则无响应。
getenforce:三秒确认 SELinux 当前是否真在“管事”
直接运行
,它只输出一行:要么是
,要么是
,要么是
。这是最轻量、最可靠的“实时状态快照”,不查配置、不读磁盘,只看内核当前执行策略的模式。
常见错误现象:
返回
,但
显示
—— 这说明 SELinux 内核模块已被卸载(比如用
启动参数),此时其他命令可能失效或行为异常。
:策略正在生效,违规操作会被拒绝(如访问被标记为
的文件却由非
进程发起)
:策略仍在加载,但所有拒绝动作都被绕过,只记日志到
或
:SELinux 完全未启动,
会报错
sestatus:看懂“配置 vs 实际”双状态,避免重启后翻车
是唯一能同时告诉你“现在怎么跑”和“重启后打算怎么跑”的命令。关键字段有两组:
(当前运行模式)和
(配置文件设定值)。
使用场景:排查“为什么我改了
却没生效?”—— 很可能
是
,但
是
,说明你只临时切过模式,还没重启。
加
可看到进程和文件上下文示例,适合调试 Web 服务权限问题
加
能列出所有布尔值开关(如
),比翻文档快得多
注意
≠
;前者只表示模块已加载,后者才决定是否拦截
seinfo:查策略细节时别被空输出坑住
不是状态检查命令,而是策略元数据浏览器。它默认不输出任何内容,必须带参数才有信息,新手常以为命令坏了。
CentOS Linux 7.9.2009
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载
典型误操作:只输
,回车后光标闪半天没反应,其实它在等你指定要查什么。
:列出所有类型(type)、角色(role)、属性(attribute)—— 输出极长,建议配合
或
:查
域允许访问哪些类型(即它的“白名单”)
若提示
,大概率是 SELinux 处于
模式,或策略文件损坏(
不可读)
临时关 SELinux 的正确姿势:setenforce 0 ≠ 关闭 SELinux
实际是切换到
模式,不是关闭。SELinux 依然在运行、依然记录 AVC 拒绝日志、依然维护安全上下文——只是不拦你。
为什么这样做?因为很多故障(如 Nginx 无法读取自定义路径、容器挂载失败)需要先排除 SELinux 干扰,又不能贸然禁用(禁用需重启且破坏最小权限原则)。
执行后务必用
验证,别信“刚才敲了就一定成功”
在重启后自动恢复原配置,不会持久化——这点常被运维忽略,导致上线后突然报错
若
报错
,说明你没用 root 权限,或当前已是
模式(此时该命令不支持)
真正要关 SELinux,得改
里的
并重启;但除非你明确知道后果,否则只推荐用
模式过渡。
getenforceEnforcingPermissiveDisabledgetenforceDisabledsestatusenabledselinux=0Enforcinghttpd_sys_content_thttpd_tPermissive/var/log/audit/audit.logdmesgDisabledsetenforceOperation not supportedsestatusCurrent modeMode from config file/etc/selinux/configCurrent modePermissiveMode from config fileenforcing-v-bhttpd_can_network_connectSELinux status: enabledCurrent mode: enforcingseinfoseinfoseinfo -alessgrepseinfo -x -t httpd_thttpd_tCould not open policy handleDisabled/sys/fs/selinux/policysetenforce 0Permissivegetenforcesetenforce 0setenforce 0Permission deniedDisabled/etc/selinux/configSELINUX=disabledPermissive