Вопрос или проблема
У меня включен SELinux с политикой MLS и в режиме принуждения.
На машине установлен podman. Это хорошо работает от имени root. (расширение привилегий с помощью sudo)
[podman@vcs ~]$ podman ps -a
ERRO[0000] выполнение команды `/usr/bin/newuidmap 1778 0 1001 1 1 589824 65536 65537 655360 65536 131073 720896 65536`: newuidmap: ошибка записи в uid_map: Операция не разрешена
Ошибка: не удалось настроить пространство имен с использованием "/usr/bin/newuidmap": статус выхода 1
В логах SELinux ничего не отображается. У меня нет обратной связи.
Podman нужно переместить пространство имен пользователя, и я понимаю, что SELinux отказывает в разрешениях.
Что-то понимаю, почему это происходит?
Как дать разрешения podman для пользователя linux?
Спасибо. С уважением.
Ответ или решение
Ваша проблема связана с тем, что SELinux (Security-Enhanced Linux) в режиме MLS (Multi-Level Security) ограничивает доступ к функциям управления пространством имен для пользователей с низкими привилегиями, таких как user_u
.
Ошибка, которую вы получаете, указывает на то, что Podman не может получить разрешение на использование newuidmap
, что является инструментом для управления пространством имен пользователей. Эта проблема часто возникает в контексте SELinux, когда SELinux блокирует необходимые операции.
Решение проблемы с SELinux и Podman для пользователя user_u
-
Проверка политик SELinux:
Убедитесь, что у вас установлены необходимые политики SELinux для работы с Podman. Вы можете установитьcontainer-selinux
, если он еще не установлен:sudo dnf install container-selinux
-
Настройка правил для Pods:
Если вы используете MLS и ваш пользователь имеет контекстuser_u
, вы должны убедиться, что пользователь имеет разрешения на выполнение необходимых операций. Вы можете использовать коммандуsetsebool
, чтобы разрешить необходимые операции:sudo setsebool -P container_manage_cgroup on
-
Добавление пользователя в необходимые группы:
Убедитесь, что ваш пользователь добавлен в группыroot
иdocker
или в любую другую группу, которая имеет доступ кnewuidmap
иnewgidmap
. Это можно сделать следующей командой:sudo usermod -aG root,docker your_username
-
Проверка контекстов SELinux:
Убедитесь, что необходимые файлы и каталоги имеют правильные контексты SELinux. Вы можете проверить контексты с помощью команды:ls -Z /usr/bin/newuidmap
Убедитесь, что контексты соответствуют требованиям политики SELinux.
-
Дополнительная отладка:
Если проблема не решается, вы можете включить режим отладки SELinux, чтобы получить больше информации о том, что происходит. Для этого сделайте следующее:sudo setenforce 0 # переключение SELinux в режим permissive
В этом режиме SELinux будет записывать нарушения, но не блокировать их, что поможет тщательнее проанализировать проблему.
-
Изменение конфигурации Podman:
Также вы можете изменить конфигурацию Podman так, чтобы он работал с пользователями без использования привилегированных операций. Например, используя конфигурации в файле/etc/containers/containers.conf
. -
Перезагрузка и тестирование:
После внесения изменений рекомендуется перезагрузить систему или перезапустить необходимые службы, чтобы подтвердить, что изменения вступили в силу.
Заключение
После выполнения вышеуказанных действий вы должны быть в состоянии запустить Podman от имени пользователя user_u
без ошибок, связанных с SELinux. Если проблема продолжает возникать, может потребоваться углубленный анализ конкретных логов SELinux и адаптация правил в зависимости от ваших уникальных требований и конфигураций.