使用 Ubuntu 14.04 主机在 Centos7 LXC 容器上启用 SELinux

Dav*_*rch 4 selinux lxc

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

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

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

sudo lxc-create -n <name> -t download -- -d centos -r 7 -a amd64
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

我已经用谷歌搜索了我能想到的所有内容,并在这里进行了搜索,但找不到任何其他关于为什么我无法在 LXC 容器中启用 SELinux 的建议,有人可以帮忙吗?

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

c4f*_*t0r 9

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

容器是一个正常的进程,运行在其他 namespace


Mic*_*ton 5

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

有关更多信息,请参阅Linux 容器简介

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