Включить 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, используйте полную виртуальную машину.