Linux SELinux权限如何管理
导读:Linux SELinux 权限管理实操指南 一 基础与模式管理 查看状态与模式 查看整体状态:sestatus 查看当前运行模式:getenforce(返回 Enforcing/Permissive/Disabled) 临时切换模...
Linux SELinux 权限管理实操指南
一 基础与模式管理
- 查看状态与模式
- 查看整体状态:sestatus
- 查看当前运行模式:getenforce(返回 Enforcing/Permissive/Disabled)
- 临时切换模式(立即生效,重启后失效)
- 切换到宽容模式:setenforce 0
- 切换到强制模式:setenforce 1
- 永久配置模式
- 编辑配置文件:/etc/selinux/config,设置 SELINUX=enforcing|permissive|disabled
- 注意:在 RHEL9 及以上,若要彻底禁用,需在引导参数加入 selinux=0(如用 grubby 工具),单纯在 config 中设 disabled 不再生效;启用/恢复可用 grubby --update-kernel ALL --args selinux=0/–remove-args selinux。生产环境不建议禁用,优先使用 Permissive 进行排障。
二 安全上下文与标签管理
- 查看上下文
- 文件/目录:ls -Z /path;进程:ps -Z -C < 进程名>
- 典型格式:user_u:role_r:type_t:s0(主体/客体以 type 为核心做访问控制)
- 修改与持久化
- 临时修改:chcon -t /path(重启或 restorecon 可能还原)
- 持久化默认标签:
- 添加规则:semanage fcontext -a -t “/your/path(/.*)?”
- 应用规则:restorecon -Rv /your/path
- 常见类型示例
- Web 内容:httpd_sys_content_t;Web 端口:http_port_t
- MariaDB 数据:mysqld_db_t;临时目录:tmp_t
- 端口标签(示例)
- 允许 8080/tcp 作为 HTTP 端口:semanage port -a -t http_port_t -p tcp 8080
- 原则:尽量使用 semanage fcontext + restorecon 做持久化,避免长期依赖 chcon。
三 布尔值与策略调优
- 查看与开关布尔值
- 列出布尔值:semanage boolean -l 或 getsebool -a
- 临时开关:setsebool on|off
- 持久化开关:setsebool -P on|off
- 典型场景
- 允许 Web 连接数据库:setsebool -P httpd_can_network_connect_db on
- 允许 Web 发送邮件:setsebool -P httpd_can_sendmail on
- 原则:优先用布尔值做细粒度开关,遵循最小权限,能不开就不开。
四 故障排查与自定义策略
- 分析拒绝日志
- 查看最近 AVC:ausearch -m avc -ts recent
- 或查日志:*grep "avc:.denied" /var/log/audit/audit.log
- 人性化解释:sealert -a /var/log/audit/audit.log
- 从拒绝生成策略模块
- 生成并安装模块:
- audit2allow -M mypolicy
- semodule -i mypolicy.pp
- 生成并安装模块:
- 使用提示
- 先判断拒绝是否合理,优先通过“改路径/改类型/改布尔值”来合规化访问
- 自定义模块仅作补充,避免过度授权
- 排障流程建议:Permissive 验证 → 定位最小修复点 → 回归 Enforcing。
五 用户与角色管理
- 查看与映射
- 查看 Linux 用户到 SELinux 用户的映射:semanage login -l
- 查看可用 SELinux 用户:seinfo -u;查看角色:seinfo -r
- 默认映射
- 默认将 Linux 用户映射到 default → unconfined_u(权限较宽)
- 安全建议
- 将需要受限的 Linux 用户映射到受管制的 SELinux 用户(如 staff_u、user_u、guest_u、xguest_u),以继承更严格的域限制
- 注意:system_u/system_r 用于系统进程与对象,切勿将其分配给普通 Linux 用户
- 受管制的用户域通常对 setuid 有严格限制(如 user_t/guest_t/xguest_t 不能执行 su/sudo 提权)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux SELinux权限如何管理
本文地址: https://pptw.com/jishu/777254.html
