我使用的云 VPS 提供商之一在 /data 磁盘上提供大部分存储,因此我的 webroot 位于/data/www
而不是/var/www
.并且有一个符号链接,以便 Apache 在默认配置下正常工作。
我认为目标是复制下面的所有规则/var/www
并创建相同的规则,除了/var/www
更改为/data/www
。有没有办法可以快速完成?
[~]$ sudo semanage fcontext -l | grep -i /var/www
/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
/var/www(/.*)?/logs(/.*)? all files system_u:object_r:httpd_log_t:s0
/var/www/[^/]*/cgi-bin(/.*)? all files system_u:object_r:httpd_sys_script_exec_t:s0
/var/www/apcupsd/multimon\.cgi regular file system_u:object_r:apcupsd_cgi_script_exec_t:s0
... many more ...
我只知道如何一一完成它们,通过给出:
sudo semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"
sudo restorecon -R -v /data/www
这照顾到了第一条规则。有没有办法可以快速完成?
答案1
您在寻找吗代替偶然地?从man semanage-fcontext
:
选项
例子
-e EQUAL
,--equal EQUAL
生成默认标签时,用源路径替换目标路径。这是与 一起使用的
fcontext
。需要源路径和目标路径参数。目标子树的上下文标签与源子树定义的上下文标签等效。
︙
设置文件上下文时 替换/home1
为/home
# semanage fcontext -a -e /home /home1 # restorecon -R -v /home1
演示:
mkdir -p /data/www2/html
touch /data/www2/html/foo
semanage fcontext -a -e /var/www /data/www2
restorecon -R /data/www2
ls -lhZ /data/www2/html/
-rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 0 15. Jul 15:31 foo