Não confirmado se esta é a resposta certa ainda ...
/usr/sbin/semanage fcontext -a -t sysfs_t "/www(/.*)";
/usr/sbin/semanage fcontext -a -t httpd_sys_content_t "/www/live/.*/.*";
/usr/sbin/semanage fcontext -a -t httpd_log_t "/www/live/.*/logs(/.*)?";
/sbin/restorecon -vr "/www";
Lá, o sysfs_t
é o bit importante.
Eu posso encontrar os domínios que o LogRotate pode usar:
sesearch -s logrotate_t -SA
Fazendo uma pesquisa rápida para a permissão "ler" (não apenas "abrir") para "dir":
sesearch -s logrotate_t -SA -c dir -p read | sort
Em seguida, digitalizando a lista, eu diria que sysfs_t
é o mais adequado.
Um problema que encontrei é que, se eu executar /usr/sbin/logrotate
, herda o contexto da conta root:
id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Por isso, ele obtém automaticamente acesso "ilimitado" (ou seja, acesso total) ... então, para testar, descobri que usar o seguinte, embora não seja perfeito, funcionou:
sandbox /usr/sbin/logrotate -d /etc/logrotate.conf
Eu também descobri newrole
e runcon
, ambos precisam ser instalados separadamente em um sistema RedHat / CentOS via:
yum install policycoreutils-newrole
newrole -r system_r -t logrotate_t
runcon -r system_r -t logrotate_t /usr/sbin/logrotate -d /etc/logrotate.conf
Mas ambos estavam me dando permissão de erros negados (provavelmente devido à transição não ser permitida):
Outra coisa que achei útil:
yum install setools-console
seinfo -usystem_u -x
seinfo -rsystem_r -x
seinfo -tlogrotate_t -x
seinfo -tsysfs_t -x
E para verificar a lista de regras que criei no sistema:
cat /etc/selinux/targeted/contexts/files/file_contexts.local
Para mais informações sobre o SELinux, achei estes 17 tutoriais muito úteis:
Pessoalmente, eu encontrei todos esses programas muito inconsistentes, e posso entender porque a maioria das pessoas simplesmente desativam o SELinux por padrão ...
- Você não pode ter um espaço após as opções seinfo -u / r / t
- Você precisa instalar pacotes extras para obter
seinfo
enewrole
- Você não pode executar facilmente um programa manualmente em um determinado contexto (para fins de teste).
- O arquivo
audit.log
usa registros de data e hora, portanto, tenteausearch -m avc --start today
. - Nenhuma convenção de nomenclatura com os muitos programas usados (por exemplo,
matchpathcon
). - Eu não diria que a saída (ou operação) de
audit2allow
era óbvia.
O que é uma pena, já que parece ser um sistema muito poderoso em geral.