Как разрешить Samba выполнять скрипт root preexec при включенном SELinux

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

Я запускаю сервер SAMBA на Fedora с включенным SELinux. У меня возникла проблема при попытке запустить bash-скрипт в smb.conf как root preexec.

Скрипт принадлежит root:root
Он имеет право на выполнение chmod +x
Скрипт работает хорошо, если запускать его из командной строки.

Проблема возникает, когда я пытаюсь получить доступ к общей папке, которая должна активировать root preexec, и я получаю AVC в /var/log/audit/audit.log от SELinux.

Как сообщить SELinux, чтобы разрешить выполнение скрипта в root preexec с Samba?

После множества поисков в Google я получил много результатов о Samba и SELinux, но ничего о запуске скрипта как preexec, поэтому я начал искать Samba SELinux и, наконец, нашел свой ответ. Надеюсь, это поможет кому-то другому.

  1. Убедитесь, что скрипт исполняемый (с командной строки и работает нормально)
  2. Поместите свой скрипт в /var/lib/samba/scripts (создайте директорию, если она не существует, я это сделал)
  3. используйте setsebool -P samba_run_unconfined 1, чтобы сообщить SELinux разрешить выполнение скрипта в /var/lib/samba/scripts.

Я нашел ответ здесь после многих часов головной боли: https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/6/html/managing_confined_services/sect-managing_confined_services-samba-booleans#sect-Managing_Confined_Services-Samba-Booleans

Ответ или решение

Теория: Решение проблемы запуска скриптов Samba с SELinux

При конфигурации сервера Samba на Fedora с включенным SELinux, вы можете столкнуться с проблемами при запуске скрипта через параметр root preexec в конфигурационном файле smb.conf. Этот параметр позволяет задавать скрипт, который будет выполнен от имени суперпользователя перед тем, как будет предоставлен доступ к общему ресурсу. Однако SELinux, обеспечивающий дополнительный уровень безопасности, может блокировать выполнение данного скрипта, что проявляется в виде сообщений об отказе доступа (AVC) в /var/log/audit/audit.log.

Пример: Текущая проблема

  1. Скрипт принадлежит пользователю и группе root:root и обладает разрешениями на выполнение (chmod +x).
  2. Скрипт работает корректно при запуске из командной строки.
  3. Однако, при попытке доступа к общей папке, скрипт не выполняется, и в журналах SELinux появляется соответствующее событие AVC.

Применение: Конфигурация SELinux для Samba

Чтобы разрешить выполнение скрипта через root preexec с SELinux, необходимо предпринять следующие шаги:

  1. Убедитесь, что скрипт выполняется: Скрипт должен работать без ошибок при запуске напрямую из командной строки, чтобы убедиться в его корректной функциональности.

  2. Разместите скрипт в определенной директории: Поместите ваш скрипт в директорию /var/lib/samba/scripts. Вы можете создать эту директорию, если она не существует, используя команду mkdir -p /var/lib/samba/scripts.

  3. Настройте SELinux с использованием booleans: Выполните команду setsebool -P samba_run_unconfined 1, чтобы изменить политику SELinux и разрешить выполнение скриптов, не ограниченных контекстами, из директории /var/lib/samba/scripts.

Пояснение к шагам:

  • Размещение скриптов в /var/lib/samba/scripts: Это стандартная практика для обеспечения упрощенного контроля доступа и облегчения работы с политиками безопасности.

  • Использование setsebool: Команда setsebool изменяет настройки SELinux в части исполнения скриптов, связанных с Samba, и ключ -P гарантирует, что эти изменения сохранятся после перезагрузки.

Анализ и мониторинг:

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

Если настройка SELinux все же препятствует выполнению (при более строгих политиках безопасности), вы также можете рассмотреть возможность настройки пользовательских политик SELinux. Однако такой подход требует более глубокого понимания SELinux и может значительно усложнить администрирование.

Заключение:

SELinux предоставляет мощные инструменты для управления безопасностью системы, однако его использование требует четкой конфигурации, особенно в контексте запуска скриптов через сервисы, такие как Samba. При правильной настройке можно достичь гармоничного сосуществования безопасности и функциональности. Решение проблемы с помощью samba_run_unconfined значительно упрощает задачи администрирования, позволяя сфокусироваться на развитии и поддержке инфраструктуры.

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

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