Linux

如何將 SELinux 標籤分配給帶有 semanage 的符號連結,以便在重新標記後仍然存在?

  • November 28, 2015

我的 apache DocumentRoot /var/www 是另一個路徑的符號連結。目標具有適當的文件上下文標籤 (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 設置連結本身的標籤,以便在重新標記後保持為 httpd_sys_content_t?

我想到了:

semanage 有一個選項-f,允許您指定文件類型,如模式欄位中所示lsd對於目錄,--對於正常文件,l對於連結)。使用-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手冊頁。

引用自:https://serverfault.com/questions/177061