SELinux规则如何在Ubuntu中修改
导读: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/config 为 SELINUX=disabled 并重启。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: SELinux规则如何在Ubuntu中修改
本文地址: https://pptw.com/jishu/766493.html
