为许多标签设置 SELinux 上下文的快速方法 - CentOS 8

为许多标签设置 SELinux 上下文的快速方法 - CentOS 8

我使用的云 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

相关内容