Linux sestatus 命令
sestatus
是 Linux 系统中用于查看 SELinux (Security-Enhanced Linux) 当前状态的命令行工具。SELinux 是由美国国家安全局(NSA)开发的一种强制访问控制(MAC)安全机制,为 Linux 系统提供额外的安全层。
命令语法
sestatus [选项]
常用选项
选项 | 说明 |
---|---|
-v |
显示详细输出,包括进程和文件的上下文信息 |
-b |
显示当前加载的策略布尔值(规则开关) |
命令输出解析
执行 sestatus
命令后,典型的输出如下:
实例
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
关键字段说明
-
SELinux status
enabled
: SELinux 已启用disabled
: SELinux 已禁用
-
Current mode
enforcing
: 强制执行安全策略permissive
: 仅记录违规行为但不阻止disabled
: 完全禁用
-
Loaded policy name
targeted
: 默认策略,仅保护特定服务mls
: 多级安全策略(更严格)minimum
: 最小策略
实际应用示例
示例1:检查 SELinux 基本状态
$ sestatus
这是最基本的用法,快速查看 SELinux 是否启用及其运行模式。
示例2:查看详细上下文信息
$ sestatus -v
输出将包含进程和文件的上下文信息,例如:
实例
Process contexts:
Current context: unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Init context: system_u:system_r:init_t:s0
...
File contexts:
Controlling terminal: unconfined_u:object_r:user_devpts_t:s0
...
Current context: unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Init context: system_u:system_r:init_t:s0
...
File contexts:
Controlling terminal: unconfined_u:object_r:user_devpts_t:s0
...
示例3:查看当前策略布尔值
$ sestatus -b
输出将显示所有可配置的策略规则开关状态,例如:
实例
Policy booleans:
abrt_anon_write off
abrt_handle_event off
...
httpd_can_network_connect off
...
abrt_anon_write off
abrt_handle_event off
...
httpd_can_network_connect off
...
常见问题排查
问题1:SELinux 阻止了正常操作
解决方案:
- 首先确认是否是 SELinux 导致的问题:
grep "avc:" /var/log/audit/audit.log
- 如果是,可以临时设置为 permissive 模式测试:
sudo setenforce 0
- 永久解决方案是调整 SELinux 策略或修改文件上下文
问题2:sestatus 显示 SELinux 已禁用
可能原因:
- 系统启动时禁用了 SELinux
/etc/selinux/config
文件中设置了SELINUX=disabled
解决方案:
- 编辑
/etc/selinux/config
文件 - 修改
SELINUX=enforcing
或SELINUX=permissive
- 重启系统
最佳实践
-
生产环境建议
- 保持 SELinux 处于
enforcing
模式以获取最大安全性 - 不要轻易禁用 SELinux,而是学习如何正确配置它
- 保持 SELinux 处于
-
故障排查步骤
- 先用
sestatus
检查状态 - 查看
/var/log/audit/audit.log
获取详细拒绝信息 - 使用
audit2allow
生成自定义策略模块
- 先用
-
策略调整
- 优先使用
setsebool
调整布尔值 - 其次考虑修改文件上下文(
chcon
) - 最后才考虑创建自定义策略模块
- 优先使用
总结
sestatus
命令是管理 SELinux 系统的第一道工具,通过它可以快速了解系统的安全状态。掌握这个命令的使用方法,能够帮助系统管理员更好地维护 Linux 系统的安全性,同时在出现权限问题时快速定位原因。
点我分享笔记