Centos

semanage & restorecon -R 沒有像我預期的那樣遞歸應用

  • July 15, 2020

我的 VPS 雲提供商是在/data磁碟下提供大部分儲存的提供商之一,因此 webroot 實際上會位於/data/www而不是/var/www,並且有一個符號連結從/var/wwwto/data/www以便預設的 Apache 配置工作。

伺服器啟動時禁用了 SELinux,Wordpress 和 Postfix 執行良好。因此,當我將 SELinux 啟用為許可模式時,我通過 Cockpit 看到了很多錯誤。我是 SELinux 的新手,我做了這些:

sudo semanage fcontext -a -t httpd_sys_content_t "/data/www(/.)?"
sudo restorecon -R -v /data/www
sudo semanage fcontext -a -t httpd_sys_content_t "/data/www/html(/.)?"
sudo restorecon -R -v /data/www/html

在第一對命令之後,我很驚訝該httpd_sys_content_t類型沒有傳播到所有內容。所以我嘗試了第二對,它是一樣的。只有 2 個目錄:/data/www/data/www/html設置為所需的類型。

我可能誤解了 semanage 和 restorecon 的使用。請幫忙。目標是在/data.

為了完整起見,我再次這樣做,並複制粘貼下面的連續行。(重複命令時我使用的-m不是-a正確的嗎?)semanage

[~]$ sudo semanage fcontext -m -t httpd_sys_content_t "/data/www/html(/.)?"
[sudo] password for johnsmith:
[~]$ sudo restorecon -R -v /data/www/html
[~]$ ls -lZ /data/www/html/
total 24
drwxrwxr-x.  3 apache apache system_u:object_r:default_t:s0 4096 Jul 14 15:15 foo
-rw-r--r--.  1 apache apache system_u:object_r:default_t:s0  430 Mar  2 18:51 index.php
-rw-r--r--.  1 apache apache system_u:object_r:default_t:s0 1402 Mar  4 11:00 bar.gif
drwxr-xr-x. 12 apache apache system_u:object_r:default_t:s0 4096 Mar  3 16:29 pmadir
drwxr-xr-x. 10 apache apache system_u:object_r:default_t:s0 4096 Feb 24 12:05 sendy
drwxr-xr-x. 10 apache apache system_u:object_r:default_t:s0 4096 Jun 11 06:48 wordpress
[~]$

您可能在那裡錯過了一個*(萬用字元):

sudo semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"

引用自:https://unix.stackexchange.com/questions/598555