如何将SELinux标签分配给带有semanage的符号链接,以便在重新绑定后仍然存在?

我的apache DocumentRoot / var / www是另一个path的符号链接。 目标具有适当的文件上下文标签(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重新标记符号链接。

最初用-h选项运行chcon似乎工作:

 [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设置链接本身的标签,所以它仍然是一个relabel之后的httpd_sys_content_t?

我想到了:

semanage有个选项-f ,它允许你通过lsd表示目录, --对于普通文件, l表示链接)指定一个文件types。 当使用-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手册页。