Как назначить метку SELinux символической ссылке с semanage, чтобы она сохранялась после перемаркировки?

12

Мой apache DocumentRoot / var / www является символической ссылкой на другой путь. У цели есть соответствующая метка контекста файла (httpd_sys_content_t), чтобы apache мог читать ее с включенным SELinux. Тем не менее, символическая ссылка сама метят var_t.

[root@localhost var]# ls -lZ
lrwxrwxrwx. root root unconfined_u:object_r:var_t:s0 www -> /srv/www

Мне нужно поменять символическую ссылку с httpd_sys_content_t.

Запуск chcon с опцией -h изначально работает:

[root@localhost var]# chcon -h -t httpd_sys_content_t /var/www
[root@localhost var]# ls -lZ
lrwxrwxrwx. root root unconfined_u:object_r:httpd_sys_content_t:s0 www -> /srv/www

Однако это не переживает релабель:

[root@localhost var]# restorecon -Rv .
restorecon reset /var/www context system_u:object_r:httpd_sys_content_t:s0->syst
em_u:object_r:var_t:s0

Использование semanage не переименовывает саму ссылку; просто цель:

[root@localhost var]# semanage fcontext -a -t httpd_sys_content_t /var/www
[root@localhost var]# restorecon -Rv .
[root@localhost var]# ls -lZ
lrwxrwxrwx. root root unconfined_u:object_r:var_t:s0 www -> /srv/www

semanage не имеет опции -h.

Как я могу получить semanage для установки метки самой ссылки, чтобы она оставалась как httpd_sys_content_t после релабеля?

Стивен Т. Снайдер
источник
Вау, у меня есть значок «Популярный вопрос», а голосов нет?
Стивен Т. Снайдер

Ответы:

9

Я понял:

semanage имеет опцию, -fкоторая позволяет вам указать тип файла, как показано в поле режима с помощью ls( dдля каталогов, --для обычных файлов, lдля ссылок). Когда -f -lиспользуется, сама ссылка является целевой.

[root@localhost var]# semanage fcontext -f -l -a -t httpd_sys_content_t /var/www
[root@localhost var]# restorecon -Rv .
restorecon reset /var/www context system_u:object_r:var_t:s0->system_u:object_r:httpd_sys_content_t:s0

Смотрите semanage-fcontextсправочную страницу.

Стивен Т. Снайдер
источник
3
Этот ответ правильно использует, так -f -lкак это тот синтаксис, который был в силе, когда он был написан. Более поздние версии semanage (EL7) используют -f l.
user9517