Назад | Перейти на главную страницу

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

Мой 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 после переименования?

Я понял:

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