在带有 Ubuntu 14.04 主机的 Centos7 LXC 容器上启用 SELinux

在带有 Ubuntu 14.04 主机的 Centos7 LXC 容器上启用 SELinux

我正在尝试设置一个 LXC 容器进行测试,该容器运行 CentOS 7 并启用了 SELinux 以满足我尝试运行的测试的要求。

尽管我付出了所有努力,但我仍然无法让 getenforce 的输出返回除“Disabled”之外的任何内容。

该容器最初使用以下 lxc 命令创建:

sudo lxc-create -n <name> -t download -- -d centos -r 7 -a amd64

我已经将容器配置文件设置为使用 fedora.common.conf 来解决启动缓慢的问题,并执行了一些其他引导操作,但我认为没有什么会影响 SELinux。

我已尝试/检查以下内容以尝试启用它(可能还有一些我忘记的东西!)

  • 在 /etc/selinux/config 中设置 SELINUX=enforcing
  • 删除模板指向 /usr/sbin/selinuxenabled 的 /bin/false 符号链接并恢复原始文件
  • 将 /selinux/enforce 设置为 1
  • 安装了之前缺少的 selinux-policy-targeted 包
  • 检查我的内核是否支持 SELinux
  • 创建 /.autorelabel 以尝试重新标记文件系统,但在容器重新启动时似乎并未被拾取(该文件仍然存在)
  • 尝试使用 fixfiles 手动重新标记 fs,但结果出现错误,提示 SELinux 未启用。

我还没有在主机上启用 SELinux,因为我确信我已经看到运行 CentOS7 的 docker 容器可以在主机不需要安装或运行 SELinux 的情况下运行它。

我已经在 Google 上搜索了所有我能想到的内容,并在这里搜索了一下,但没有找到任何其他建议来解释为什么我无法在这个 LXC 容器内启用 SELinux,有人可以帮忙吗?

我正准备放弃并创建一个 CentOS7 主机来运行我的 CentOS7 容器,但我真的希望这不是必要的。

答案1

Selinux需要在你的物理主机上运行,​​因为Selinux它在内核端运行并且你的容器与物理主机共享内核。

容器是在其他进程中运行的正常进程namespace

答案2

SELinux 没有命名空间,因此各个容器不能拥有自己单独的 SELinux 策略。虽然 SELinux 在主机上运行,​​但它在容器中始终显示为“禁用”。

有关详细信息,请参阅For more information, seeLinux 容器简介

如果您正在测试 SELinux 策略,请使用完整的虚拟机。

相关内容