首页主机资讯Ubuntu SELinux权限设置方法

Ubuntu SELinux权限设置方法

时间2025-11-21 17:39:03发布访客分类主机资讯浏览1398
导读:Ubuntu 启用与配置 SELinux 的实用步骤 一 前置说明与准备 Ubuntu 默认启用的是 AppArmor,并非 SELinux。如确需使用 SELinux,需先安装并启用相关组件,再按需调整策略与模式。 建议准备:可回滚的快...

Ubuntu 启用与配置 SELinux 的实用步骤

一 前置说明与准备

  • Ubuntu 默认启用的是 AppArmor,并非 SELinux。如确需使用 SELinux,需先安装并启用相关组件,再按需调整策略与模式。
  • 建议准备:可回滚的快照/备份、一台测试环境、对业务影响的可维护时间窗。

二 安装与启用 SELinux

  • 安装基础与策略包(含工具链):
    • sudo apt update
    • sudo apt install selinux-basics selinux-policy-default selinux-utils auditd policycoreutils selinux-policy-dev
  • 启用 SELinux 并首次重打标签:
    • sudo selinux-activate
    • 重启系统:sudo reboot
  • 说明:
    • 初次启用会对文件系统重新打标签(relabel),耗时与数据量相关。
    • Ubuntu 20.04 等版本上,上述流程已验证可行。

三 模式切换与持久化配置

  • 查看当前模式:
    • getenforce(返回 Enforcing/Permissive/Disabled
    • sestatus(查看更详细状态)
  • 临时切换(无需重启):
    • 宽容模式(仅告警不阻断):sudo setenforce 0
    • 强制模式:sudo setenforce 1
  • 永久配置(重启后生效):
    • 编辑 /etc/selinux/config,设置:
      • SELINUX=enforcing | permissive | disabled
    • 注意:
      • enforcing/permissivedisabled 之间切换需要重启。
      • disabled 改为启用时,系统会触发重新打标签

四 常见权限设置与排错流程

  • 文件与目录上下文(Label)
    • 查看:ls -Z /path
    • 持久化添加 fcontext:sudo semanage fcontext -a -t “/path(/.*)?”
    • 应用标签:sudo restorecon -Rv /path
    • 示例(Web 内容):sudo semanage fcontext -a -t httpd_sys_content_t “/var/www/html(/.*)?” & & sudo restorecon -Rv /var/www/html
  • 查看与分析拒绝日志
    • 实时/近期 AVC:sudo ausearch -m avc -ts recent
    • 生成报表:sudo aureport -m avc
    • 图形/辅助分析:sudo sealert -a /var/log/audit/audit.log
  • 布尔值与策略开关
    • 列出布尔:getsebool -a
    • 设置持久布尔:sudo setsebool -P on|off
    • 示例(允许 httpd 访问用户主目录):sudo setsebool -P httpd_enable_homedirs 1
  • 自定义策略模块(最小权限示例)
    • 场景:为自定义程序 myapp 创建最小策略
    • 生成模板:mkdir myapp & & cd myapp & & sepolgen --init
    • 编辑 myapp.te(示例片段,按需增删):
      • module myapp 1.0;
      • require { type unconfined_t; class file { read write getattr } ; class process transition; }
      • type myapp_t;
      • allow myapp_t self:process transition;
      • allow myapp_t unconfined_t:process transition;
      • allow myapp_t myapp_exec_t:file { read execute getattr } ;
      • allow myapp_t myapp_log_t:file { write append getattr } ;
    • 编译与加载:
      • make -f /usr/share/selinux/devel/Makefile
      • sudo semodule -i myapp.pp
    • 为可执行文件打类型标签(示例):sudo chcon -t myapp_exec_t /usr/local/bin/myapp
  • 排错要点
    • 优先在 Permissive 模式下验证策略变更,确认无阻断后再切回 Enforcing
    • 使用 ausearch/aureport/sealert 精确定位被拒的源/目标类型与权限,按“最小权限”逐步放行。

五 实用建议与替代方案

  • 生产环境建议保持 SELinux 为 Enforcing,并通过布尔值与细化 fcontext 逐步收敛权限,避免一次性大幅放宽策略。
  • 若 SELinux 配置与维护成本过高,可考虑 AppArmor(Ubuntu 默认安全模块)作为替代:
    • 状态:sudo aa-status
    • 启用:sudo systemctl enable --now apparmor

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu SELinux权限设置方法
本文地址: https://pptw.com/jishu/753489.html
debian readdir如何处理权限不足问题 debian readdir如何设置读取权限

游客 回复需填写必要信息