Включить SELinux на контейнере Centos7 LXC с хостом Ubuntu 14.04

Я пытаюсь настроить контейнер LXC для тестирования, на котором запущен CentOS 7 с включенным SELinux, чтобы соответствовать требованиям для теста, который я пытаюсь запустить.

Несмотря на все мои усилия, я все еще не могу заставить вывод getenforce возвращать что-либо, кроме "Disabled".

Контейнер изначально был создан с помощью следующей команды lxc:

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

Я настроил файл конфигурации контейнера для использования fedora.common.conf для решения проблем с медленным запуском и выполнил некоторые другие биты начальной загрузки, но я ничего не могу придумать, чтобы повлиять на SELinux.

Я попытался / проверил следующее, чтобы попытаться включить его (и, возможно, еще кое-что, что я забыл!)

  • Настройка SELINUX= принудительное применение в /etc/selinux/config
  • Удаление символической ссылки на /bin/false, на которую указывал шаблон /usr/sbin/selinuxenabled и восстановление исходного файла
  • Установить / selinux / принудительно установить 1
  • Установлен пакет, ориентированный на политику selinux, который ранее отсутствовал
  • Проверил, мое ядро ​​поддерживает SELinux
  • Создан /.autorelabel для попытки перемаркировать файловую систему, которая, похоже, не была обнаружена при перезапуске контейнера (файл все еще там)
  • Попытка использовать файлы Fixfile для привязки к fs вручную, что приводит к ошибке, указывающей, что SELinux не включен.

Я еще не зашел так далеко, чтобы включить SELinux на хосте, так как я почти уверен, что видел докер-контейнеры, работающие на CentOS7, которые могут запускать его без установки или запуска SELinux.

Я погуглил все, что могу придумать, провел поиск здесь и не могу найти других предложений, почему я не могу включить SELinux в этом контейнере LXC, может кто-нибудь помочь?

Я почти готов сдаться и создать хост CentOS7 для запуска своих контейнеров CentOS7, но я действительно надеюсь, что в этом нет необходимости.

2 ответа

Решение

Selinux должен быть запущен на вашем физическом хосте, потому что Selinux работает на стороне ядра, и ваш контейнер использует ядро ​​совместно с физическим хостом.

Контейнер - это обычный процесс, который выполняется в других namespace

SELinux не является пространством имен, поэтому отдельные контейнеры не могут иметь свои собственные отдельные политики SELinux. SELinux всегда будет "отключен" в контейнере, хотя он работает на хосте.

Для получения дополнительной информации см. Введение в контейнеры Linux.

Если вы тестируете политики SELinux, используйте полную виртуальную машину.

Другие вопросы по тегам