跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Linux getenforce / sestatus / seinfo 的状态检查清单

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

相关文章