Вопрос или проблема
Я установил Guix и вручную установил встроенную политику SELinux. Но согласно Рикардо Вурмусу, по состоянию на 30 июня 2021 года:
На самом деле есть всего два способа: либо 1) отключить SELinux (или установить его в режим допуска) либо 2) установить/отладить/переустановить политику демона SELinux, которая входит в комплект Guix.
Политика демона не устанавливается методом бинарной установки, так как известно, что она неполная. Вам потребуется получить копию исходников Guix и настроить их. Файл, который вам нужен, называется “etc/guix-daemon.cil”. Чтобы отладить его, вам нужно установить его, установить SELinux в режим допуска, запустить демон, а затем проверить журнал аудита на наличие ошибок.
Существует открытая проблема для файла SElinux guix-daemon.cil, который предлагает патч, который, кажется, уже включен в файл, входящий в мою установку.
Я установил setroubleshoot
и продолжал перезапускать guix-daemon.service
, следуя советам, появляющимся в уведомлениях. Демон наконец запустился после:
$ sudo chcon -R -t guix_daemon.guix_daemon_conf_t /var/guix/
$ sudo chcon -R -t guix_daemon.guix_profiles_t /var/guix/profiles/per-user/root/current-guix
$ sudo chcon -R -t guix_daemon.guix_profiles_t /var/guix/profiles/per-user/root/current-guix-1-link
Но я все еще не могу приступить к установке glibc-locales
:
$ guix install glibc-locales
hint: Рассмотрите возможность установки пакета `glibc-utf8-locales` или `glibc-locales` и определения `GUIX_LOCPATH`, примерно так:
guix install glibc-utf8-locales
export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"
Смотрите раздел "Настройка приложений" в руководстве для получения дополнительной информации.
guix install: ошибка: remounting /gnu/store writable: доступ запрещен
Инструмент диагностики SELinux сообщает, что “guix-daemon” не имеет доступа “remount” к “filesystem” и предлагает:
# ausearch -c 'guix-daemon' --raw | audit2allow -M my-guixdaemon
# semodule -X 300 -i my-guixdaemon.pp
Но ausearch
выдает ошибку на этом:
$ sudo ausearch -c '(x-daemon)' --raw | audit2allow -M my-xdaemon
компиляция не удалась:
libsepol.hierarchy_add_type_callback: guix_daemon не существует, guix_daemon.guix_daemon_conf_t - сирота
libsepol.hierarchy_add_bounds: 1 ошибка найдена при добавлении иерархий
Как я могу разрешить guix-daemon
произвести remount файловой системы в SELinux?
Я включил режим допуска и использовал Guix в течение некоторого времени. Поддержка SELinux, по-видимому, все еще находится в разработке. setroubleshoot
регулярно уведомляет о различных проблемах. Запуск Guix с SELinux в режиме допуска кажется единственным практическим решением в данный момент.
(Чтобы включить режим допуска постоянно, отредактируйте /etc/selinux/config
и перезагрузите.)
Смотрев на вывод команды
# ausearch -c 'guix-daemon' --raw | audit2allow
#============= guix_daemon.guix_daemon_t ==============
allow guix_daemon.guix_daemon_t fs_t:filesystem remount;
#
Я перевел это в нечто для политики и добавил следующее в файл guix-daemon.cil.
(allow guix_daemon_t
fs_t (filesystem
(remount)))
Затем я перезагрузил файл политики, и это, похоже, сработало для меня.
Ответ или решение
Чтобы разрешить guix-daemon
выполнять операцию "remount" в SELinux, необходимо внести изменения в политику SELinux, так как по умолчанию данная операция может быть ограничена.
Шаги для решения проблемы:
-
Проверка режима SELinux:
Убедитесь, что SELinux включен (используйтеsestatus
для проверки текущего состояния). В случае временных тестов можно перевести SELinux в режимpermissive
, но рекомендуется создать соответствующие политики. -
Проверка журналов SELinux:
Используйте командуausearch
для поиска нарушений, связанных сguix-daemon
. Это поможет понять, какие разрешения необходимо добавить:sudo ausearch -c 'guix-daemon'
-
Генерация файла политики:
Чтобы сгенерировать файл политики на основании обнаруженных нарушений, используйте следующую команду:sudo ausearch -c 'guix-daemon' --raw | audit2allow -M my-guixdaemon
-
Внесение изменений в файл политики:
Изучите сгенерированный файлmy-guixdaemon.te
, чтобы понять, какие разрешения он добавляет. В вашем случае вы можете добавить разрешение вручную. Откройте файлetc/guix-daemon.cil
, расположенный в источниках Guix, и добавьте следующий код:(allow guix_daemon_t fs_t (filesystem (remount)))
-
Применение новой политики:
После внесения изменений загрузите новую политику с помощью команды:sudo semodule -X 300 -i my-guixdaemon.pp
-
Перезапуск сервиса:
Перезапуститеguix-daemon.service
, чтобы изменения вступили в силу:sudo systemctl restart guix-daemon.service
-
Тестирование:
Теперь выполните команду установки пакета ещё раз (например,guix install glibc-locales
), чтобы проверить, решена ли проблема с разрешениями.
Замечания:
- Регулярно проверяйте логи SELinux на предмет других нарушений, которые могут возникнуть. Это оптимизирует вашу конфигурацию безопасности.
- Если вы продолжаете сталкиваться с проблемами, подумайте о модификации других политик или добавлении дополнительных разрешений на основании логов.
Заключение:
Подходя к процессу с пониманием и методическим анализом, можно успешно настроить guix-daemon
для работы в окружении SELinux. QT управления SELinux требует знания, но в конечном итоге это значительно увеличивает уровень безопасности вашей системы. Регулярно обновляйте и проверяйте ваши политики, чтобы предотвратить возможные сбои в работе системы.