一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

ubuntu中selinux的调试实用技巧

时间:2026-08-04 09:02:49 编辑:袖梨 来源:一聚教程网

Ubuntu 下 SELinux 调试技巧

ubuntu中selinux的调试技巧

一 快速定位与日志分析

  1. 确认运行状态与模式:使用 sestatus、getenforce 查看当前 SELinux 是否启用及处于 Enforcing/Permissive/Disabled 哪种模式。遇到故障时,优先切到 Permissive(不阻断仅记录)便于排查。临时切换命令:sudo setenforce 0/1。
  2. 集中查看拒绝事件:SELinux 拒绝日志默认写入 /var/log/audit/audit.log。常用检索:
    1. 全部 AVC 拒绝:ausearch -m avc
    2. 今天的拒绝:ausearch -m avc -ts today
    3. 最近 10 分钟:ausearch -m avc -ts recent
    4. 指定服务(按进程名 comm):ausearch -m avc -c httpd为便于阅读,建议加 –interpret/-i;做脚本处理可用 –raw/-r。
  3. 汇总统计:生成 AVC 报表:aureport -a(可快速看到哪些拒绝最频繁)。
  4. 无 auditd 时的替代:用 journalctl | grep AVC 抓取内核日志中的 AVC 信息(不如 auditd 精细,但可作为兜底)。

二 上下文与策略的精准修复

  1. 先判因再动手:很多“权限被拒”是文件或目录的 SELinux 上下文不对。查看上下文:ls -Z /path;若只是标签错误,优先用 restorecon 恢复默认标签,而非直接写策略。
  2. 永久修正路径标签:用 semanage fcontext 添加路径规则,再用 restorecon 应用。例如 Web 内容:
    1. 添加规则:sudo semanage fcontext -a -t httpd_sys_content_t “/var/www/html(/.*)?”
    2. 应用规则:sudo restorecon -Rv /var/www/html
  3. 临时修改(重启或 relabel 后可能失效):chcon -t httpd_sys_content_t /var/www/html/index.html。
  4. 细粒度布尔开关:查看与调整布尔值以开启/关闭功能:
    1. 查看全部:getsebool -a
    2. 临时开关:setsebool httpd_can_network_connect on
    3. 永久生效:setsebool -P httpd_can_network_connect on
  5. 谨慎自动生成策略:当确需放行时,用 audit2allow 从拒绝日志生成模块并加载:
    1. 按服务生成:ausearch -c ‘程序名’ --raw | audit2allow -M mypol
    2. 加载模块:semodule -i mypol.pp注意:自动生成的规则应作为“最小可用”的临时方案,长期应优先修复上下文或调整布尔值。

三 高效排查流程与常用命令清单

  1. 故障复现与定位:
    1. 切到宽容模式:sudo setenforce 0;2) 复现问题;3) 立刻收集 AVC:ausearch -m avc -ts recent --interpret;4) 回到强制模式:sudo setenforce 1。
  2. 快速命令清单:
    1. 状态:sestatus、getenforce
    2. 模式切换:sudo setenforce 0/1
    3. 查日志:ausearch -m avc -ts recent -i、aureport -a
    4. 查上下文:ls -Z /path
    5. 修复标签:restorecon -Rv /path;永久规则:semanage fcontext … && restorecon
    6. 布尔值:getsebool -a、setsebool [-P] 名称 on/off
    7. 生成并加载策略:ausearch -c ‘程序名’ --raw | audit2allow -M 名称 && semodule -i 名称.pp
    8. 兜底日志:journalctl | grep AVC
  3. 经验法则:优先用 restorecon/semanage 修正标签;其次用 setsebool 开关功能;最后才用 audit2allow 生成最小规则并尽快回归最小权限原则。

四 在 Ubuntu 上启用与验证 SELinux

  1. 安装与启用:
    1. 安装基础包:sudo apt update && sudo apt install selinux-basics selinux-policy-default
    2. 激活 SELinux:sudo selinux-activate
    3. 如需在引导参数强制启用,可在 /etc/default/grub 的 GRUB_CMDLINE_LINUX_DEFAULT 中加入 security=selinux,然后更新 GRUB 并重启。
  2. 验证:重启后用 sestatus 与 getenforce 确认处于期望模式;按需在 Permissive/Enforcing 间切换进行验证。

热门栏目