温馨提示×

Ubuntu中SELinux权限如何设置

小樊
34
2025-12-24 08:40:51
栏目: 智能运维

Ubuntu 中 SELinux 权限设置指南

一 前置说明与准备

  • Ubuntu 默认启用的是 AppArmor,并非 SELinux。如确需使用 SELinux,需要手动安装组件并切换安全模块。准备步骤:
    • 安装基础工具与策略包:
      • sudo apt update
      • sudo apt install selinux-basics selinux-utils auditd policycoreutils selinux-policy-default
    • 激活 SELinux(写入内核启动参数并准备首次打标):
      • sudo selinux-activate
      • 为首次启用或标签异常时创建自动重打标标记:sudo touch /.autorelabel
      • 重启系统:sudo reboot
    • 说明:首次从“禁用”切到“启用”会触发全量重打标,耗时较长属正常。

二 查看状态与模式切换

  • 查看状态与当前模式:
    • getenforce(返回:Enforcing / Permissive / Disabled
    • sestatus(显示是否启用、当前模式、策略名称等)
  • 临时切换模式(无需重启,仅对当前会话有效):
    • 设为宽容模式:sudo setenforce 0
    • 设为强制模式:sudo setenforce 1
  • 永久生效需编辑配置文件:/etc/selinux/config
    • 示例:
      • SELINUX=enforcingpermissivedisabled
      • SELINUXTYPE=default(或 mls;部分环境可见 targeted
    • 重要限制:
      • Disabled ↔ Enforcing/Permissive 的切换必须重启;
      • Enforcing/Permissive 之间可用 setenforce 即时切换;
      • 从 Disabled 首次启用时,建议保留 /.autorelabel 以完成文件系统重打标。

三 常见权限设置场景与命令

  • 文件与目录上下文(类型与标签)
    • 查询与设置文件上下文:
      • 查看:sudo semanage fcontext -l
      • 添加规则:sudo semanage fcontext -a -t httpd_sys_content_t “/var/www/html/my_dir(/.*)?”
    • 应用上下文变更:sudo restorecon -Rv /var/www/html/my_dir
    • 临时修改(不持久):sudo chcon -t httpd_sys_content_t /var/www/html/file
  • 进程域与布尔值
    • 查看进程域:ps -Z、ls -Z(用于确认进程与文件的 SELinux 标签)
    • 开关布尔值(示例):sudo setsebool -P ftp_home_dir on
  • 日志与排错
    • 查看 AVC 拒绝日志:sudo ausearch -m avc -ts recent
    • 图形化分析工具:sudo sealert -a /var/log/audit/audit.log
  • 自定义策略模块(进阶)
    • 安装开发包:sudo apt install selinux-policy-dev
    • 生成模板与编译安装(示例):
      • sepolgen --init
      • 编辑策略源文件(.te),然后:
      • make -f /usr/share/selinux/devel/Makefile
      • sudo semodule -i my_policy.pp

四 故障排查与最佳实践

  • 排错流程
    • 将系统切到 Permissive(sudo setenforce 0),确认问题是否由 SELinux 引起;
    • 使用 ausearch/sealert 定位拒绝原因,优先通过 restorecon、semanage fcontext 修正标签或布尔值;
    • 必要时再切回 Enforcing 验证。
  • 安全与变更建议
    • 生产环境优先采用 SELINUX=enforcing;调试期可先用 permissive
    • 避免直接 disabled,如需变更模式请规划维护窗口并重启;
    • 变更策略或首次启用后,保留 /.autorelabel 以确保标签一致性;
    • 若仅需“类似 MAC”的能力且团队更熟悉 AppArmor,可继续使用 AppArmor 以降低维护复杂度。

0