首页主机资讯SELinux规则如何在Ubuntu中修改

SELinux规则如何在Ubuntu中修改

时间2025-12-08 23:43:03发布访客分类主机资讯浏览666
导读:Ubuntu 中修改 SELinux 规则的实用步骤 前置说明 Ubuntu 默认不启用 SELinux,默认使用 AppArmor。如确需使用 SELinux,需要手动安装组件、启用并维护策略。变更前建议备份关键数据与配置,并在测试环境...

Ubuntu 中修改 SELinux 规则的实用步骤

前置说明

  • Ubuntu 默认不启用 SELinux,默认使用 AppArmor。如确需使用 SELinux,需要手动安装组件、启用并维护策略。变更前建议备份关键数据与配置,并在测试环境验证。

一 启用与初始化 SELinux

  • 安装必要组件与审计服务:sudo apt update & & sudo apt install selinux-basics selinux-policy-default auditd audispd-plugins
  • 启用 SELinux 并做首次标记:sudo selinux-activate;必要时创建 /.autorelabel 并重启,以触发文件系统重新打标。
  • 持久化模式:编辑 /etc/selinux/config,将 SELINUX=permissive(先宽容便于排错)或 SELINUX=enforcing;临时切换可用 setenforce 0/1
  • 验证状态:执行 sestatus,应看到 enabled、当前模式与策略名称。

二 常用规则修改方式

  • 文件与目录上下文(fcontext)
    • 查看现有规则:semanage fcontext -l
    • 添加规则:sudo semanage fcontext -a -t httpd_sys_content_t “/var/www/html(/.*)?”
    • 应用变更:sudo restorecon -Rv /var/www/html
  • 端口标签
    • 添加端口类型:sudo semanage port -a -t http_port_t -p tcp 8080
  • 布尔值开关
    • 持久开启布尔:sudo setsebool -P httpd_enable_homedirs 1
  • 说明:若提示 semanage 未安装,可补充安装 policycoreutils 等工具包。

三 自定义策略模块 Te 文件示例

  • 场景:允许自定义程序 /usr/local/bin/my_app 读写 /data/myapp(示例类型名仅用于演示)。
  • 创建模块目录与文件:mkdir -p /selinux-custom-policy & & cd $_; nano myapp.te
  • 模块内容(.te):
    policy_module(myapp, 1.0)
    
    require {
        
        type unconfined_t;
    
        class file {
     read write open }
        ;
    
    }
        
    
    type myapp_t;
        
    type myapp_exec_t;
    
    
    # 将可执行文件标记为 myapp_exec_t
    files_type(myapp_exec_t)
    
    # 允许从 unconfined_t 域执行后转入 myapp_t
    domain_auto_trans(unconfined_t, myapp_exec_t, myapp_t)
    
    # 允许 myapp_t 对目标目录及文件读写
    allow myapp_t myapp_t:file {
     read write open }
        ;
    
    allow myapp_t myapp_t:dir {
     read write search add_name remove_name }
        ;
        
    
  • 编译与加载:
    • 编译安装:make -f /usr/share/selinux/devel/Makefile;sudo semodule -i myapp.pp
    • 打标并生效:sudo semanage fcontext -a -t myapp_t “/data/myapp(/.*)?” & & sudo restorecon -Rv /data/myapp
    • 运行程序测试,验证是否仍有拒绝。

四 排错与回退

  • 查看拒绝事件:sudo ausearch -m avc -ts recent;生成报表:sudo aureport -m avc
  • 从拒绝日志生成模块:grep avc /var/log/audit/audit.log | audit2allow -M mypol;加载:sudo semodule -i mypol.pp
  • 临时回退排错:sudo setenforce 0(宽容模式);确认无误后再切回 setenforce 1
  • 彻底关闭(不推荐):编辑 /etc/selinux/configSELINUX=disabled 并重启。

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


若转载请注明出处: SELinux规则如何在Ubuntu中修改
本文地址: https://pptw.com/jishu/766493.html
Ubuntu中SELinux如何恢复 SELinux在Ubuntu中如何更新

游客 回复需填写必要信息