Como atribuir um rótulo SELinux a um link simbólico com semânticas para que ele persista após uma nova identificação?

12

Meu apache DocumentRoot / var / www é um link simbólico para outro caminho. O destino possui o rótulo de contexto de arquivo apropriado (httpd_sys_content_t) para que o apache possa lê-lo com o SELinux ativado. No entanto, o próprio link simbólico é rotulado com var_t.

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

Preciso rotular novamente o link simbólico com httpd_sys_content_t.

Executar o chcon com a opção -h inicialmente parece funcionar:

[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

No entanto, isso não sobrevive a uma nova identificação:

[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

O uso de semântica não redefine o próprio link; apenas o alvo:

[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 não possui a opção -h.

Como posso obter a semântica para definir o rótulo do próprio link para que permaneça como httpd_sys_content_t após uma nova identificação?

Steven T. Snyder
fonte
Uau, recebi o distintivo de pergunta popular para este e não tenho votos?
9788 Steven St Sderder

Respostas:

9

Eu descobri:

semanage possui uma opção -fque permite especificar um tipo de arquivo como mostrado no campo mode por ls( dpara diretórios, --para arquivos regulares, lpara links). Quando -f -lé usado, o próprio link é direcionado.

[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

Veja a semanage-fcontextpágina do manual.

Steven T. Snyder
fonte
3
Esta resposta usa corretamente, -f -lpois é a sintaxe que estava em vigor quando foi escrita. Versões posteriores da semântica (EL7) são usadas -f l.
user9517