我的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 ,它允许你通过ls ( d表示目录, --对于普通文件, 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手册页。