Previous: Использование функционала разгрузки, Up: Настройка демона [Contents][Index]
Guix включает файл политик SELinnux etc/guix-daemon.cil, который может устанавливаться в систему, в которой включен SELinux, тогда файлы Guix будут помечены и настроены для соответствующего поведения демона. Так как система Guix не предоставляет политику SELinux, политика демона не может использоваться в системе Guix.
Примечание: The
guix-install.sh
binary installation script offers to perform the steps below for you (see Бинарная установка).
Чтобы установить политику, запустите следующую команду от root:
semodule -i /var/guix/profiles/per-user/root/current-guix/share/selinux/guix-daemon.cil
Then, as root, relabel the file system, possibly after making it writable:
mount -o remount,rw /gnu/store restorecon -R /gnu /var/guix
At this point you can start or restart guix-daemon
; on a
distribution that uses systemd as its service manager, you can do that with:
systemctl restart guix-daemon
Когда политика установлена, изменена метка файловой системы и демон
перезапущен, она должна работать в контексте guix_daemon_t
. Можно
проверить это следующей командой:
ps -Zax | grep guix-daemon
Наблюдайте файлы логов SELinux во время работы команды guix build
hello
, чтобы удостовериться, что SELinux позволяет выполнение необходимых
операций.
Эта политика не совершенна. Тут есть ряд ограничений или причуд, который нужно учитывать при разворачивании политики SELinux для демона Guix.
guix_daemon_socket_t
на самом деле не используется. Никакие операции
с сокетом не выполняются. Ничего плохого в том, чтобы иметь эту
неиспользуемую метку, но желательно определить правила сокета для этой
метки.
guix gc
cannot access arbitrary links to profiles. By design, the
file label of the destination of a symlink is independent of the file label
of the link itself. Although all profiles under $localstatedir are
labelled, the links to these profiles inherit the label of the directory
they are in. For links in the user’s home directory this will be
user_home_t
. But for links from the root user’s home directory, or
/tmp, or the HTTP server’s working directory, etc, this won’t work.
guix gc
would be prevented from reading and following these links.
/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon
, присвоена
метка guix_daemon_exec_t
; это означает, что любому файлу с
таким именем в любом профиле разрешён запуск в домене
guix_daemon_t
. Это не идеально. Атакующий может собрать пакет,
который содержит исполняемый файл и убеить пользователя установить и
запустить его, и таким образом он получит доступ к домену
guix_daemon_t
. В этой связи SELinux мог бы не давать ему доступ к
файлам, которые разрешены для процессов в этом домене.
Вам нужно будет изменить метку (label) каталога хранилища после всех
обновлений до guix-daemon, например, после запуска guix pull
.
Предполагая, что хранилище в /gnu, вы можете это сделать с
restorecon -vR /gnu
, или другими способами, предусмотренными вашей
операционной системой.
Мы можем создать политику с большими ограничениями во время установки, так
чтобы только точное имя исполняемого файла установленного в данный
момент guix-daemon
было помечено меткой guix_daemon_exec_t
вместо того, чтобы использовать регулярное выражение, выбирающее большой ряд
файлов. Проблемой в данном случае будет то, что root потребуется
устанавливать или обновлять политику во время любой установки в случае, если
обновлён исполняемый файл guix-daemon
.
Previous: Использование функционала разгрузки, Up: Настройка демона [Contents][Index]