SELinux MLS в режиме принуждения, ошибка podman в SELinux пользователя user_u.

Вопрос или проблема

У меня включен 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

  1. Проверка политик SELinux:
    Убедитесь, что у вас установлены необходимые политики SELinux для работы с Podman. Вы можете установить container-selinux, если он еще не установлен:

    sudo dnf install container-selinux
  2. Настройка правил для Pods:
    Если вы используете MLS и ваш пользователь имеет контекст user_u, вы должны убедиться, что пользователь имеет разрешения на выполнение необходимых операций. Вы можете использовать комманду setsebool, чтобы разрешить необходимые операции:

    sudo setsebool -P container_manage_cgroup on
  3. Добавление пользователя в необходимые группы:
    Убедитесь, что ваш пользователь добавлен в группы root и docker или в любую другую группу, которая имеет доступ к newuidmap и newgidmap. Это можно сделать следующей командой:

    sudo usermod -aG root,docker your_username
  4. Проверка контекстов SELinux:
    Убедитесь, что необходимые файлы и каталоги имеют правильные контексты SELinux. Вы можете проверить контексты с помощью команды:

    ls -Z /usr/bin/newuidmap

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

  5. Дополнительная отладка:
    Если проблема не решается, вы можете включить режим отладки SELinux, чтобы получить больше информации о том, что происходит. Для этого сделайте следующее:

    sudo setenforce 0  # переключение SELinux в режим permissive

    В этом режиме SELinux будет записывать нарушения, но не блокировать их, что поможет тщательнее проанализировать проблему.

  6. Изменение конфигурации Podman:
    Также вы можете изменить конфигурацию Podman так, чтобы он работал с пользователями без использования привилегированных операций. Например, используя конфигурации в файле /etc/containers/containers.conf.

  7. Перезагрузка и тестирование:
    После внесения изменений рекомендуется перезагрузить систему или перезапустить необходимые службы, чтобы подтвердить, что изменения вступили в силу.

Заключение

После выполнения вышеуказанных действий вы должны быть в состоянии запустить Podman от имени пользователя user_u без ошибок, связанных с SELinux. Если проблема продолжает возникать, может потребоваться углубленный анализ конкретных логов SELinux и адаптация правил в зависимости от ваших уникальных требований и конфигураций.

Оцените материал
Добавить комментарий

Капча загружается...