Bagaimana cara menetapkan label SELinux ke symlink dengan semanage sehingga tetap ada setelah relabel?

12

Apache saya DocumentRoot / var / www adalah tautan simbolis ke jalur lain. Target memiliki label konteks file yang sesuai (httpd_sys_content_t) sehingga apache dapat membacanya dengan SELinux diaktifkan. Namun, tautan simbolik itu sendiri dilabeli dengan var_t.

[root@localhost var]# ls -lZ
lrwxrwxrwx. root root unconfined_u:object_r:var_t:s0 www -> /srv/www

Saya perlu menandai ulang tautan simbolik dengan httpd_sys_content_t.

Menjalankan chcon dengan opsi -h awalnya tampaknya berfungsi:

[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

Namun ini tidak bertahan dari relabel:

[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

Menggunakan semanage tidak menandai ulang tautan itu sendiri; hanya targetnya:

[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 tidak memiliki opsi -h.

Bagaimana saya bisa mendapatkan semanage untuk mengatur label tautan itu sendiri sehingga tetap sebagai httpd_sys_content_t setelah relabel?

Steven T. Snyder
sumber
Wow, saya mendapat lencana Pertanyaan Populer untuk yang ini, dan tidak ada suara?
Steven T. Snyder

Jawaban:

9

Saya menemukan jawabannya:

semanage memiliki opsi -fyang memungkinkan Anda menentukan jenis file seperti yang diperlihatkan dalam bidang mode oleh ls( duntuk direktori, --untuk file biasa, luntuk tautan). Saat -f -ldigunakan, tautan itu sendiri ditargetkan.

[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

Lihat semanage-fcontexthalaman manual.

Steven T. Snyder
sumber
3
Jawaban ini digunakan dengan benar -f -lkarena itu adalah sintaks yang berlaku ketika ditulis. Versi semanage (EL7) yang lebih baru digunakan -f l.
user9517