No CentOS 7.5, Linux 3.10.0-862.3.2.el7.x86_64, estou tentando entender como funcionam os contextos de arquivo. ls -Z
, chcon
e semanage
parece funcionar como esperado, mas restorecon
parece teimosamente silencioso.
Por exemplo:
$ cd
$ mkdir context
$ ls -laZ
drwxrwxr-x liteyear liteyear ? context
$ chcon -v unconfined_u:object_r:user_home_t:s0 context
$ ls -laZ
drwxrwxr-x. liteyear liteyear unconfined_u:object_r:user_home_t:s0 context
$ rmdir context
Tudo bem, e semanage
:
$ mkdir context
$ sudo semanage fcontext -a -t user_home_t /home/liteyear/context
$ cat /etc/selinux/targeted/contexts/files/file_contexts.local
# This file is auto-generated by libsemanage
# Do not edit directly.
/home/liteyear/context system_u:object_r:user_home_t:s0
Tudo bem, mas a restorecon
rota:
$ restorecon -v /home/liteyear/context
$ ls -laZ
drwxrwxr-x liteyear liteyear ? context
não aplica o contexto do arquivo.
Já tentei várias iterações, com contextos existentes, contextos diferentes, outras pastas e arquivos, e restorecon
nunca produziu nada. Existem vários relatórios semelhantes (por exemplo. [CentOS] SELinux restorecon não funciona ), mas ninguém parece ter confirmado que há um problema.
Essa é a maneira restorecon
que deveria funcionar?
Em sistemas em execução com SELinux habilitado, novos arquivos e diretórios herdam o contexto do diretório pai ou aplicam um contexto por regras de política. O exemplo mostra que nenhum contexto SELinux é aplicado quando o diretório é criado, visível na
ls -Z
saída como?
na coluna Contexto de Segurança.Isso sugere que o SELinux não está habilitado em seu sistema. Quando o SELinux estiver habilitado, os contextos de arquivo serão aplicados automaticamente pelo sistema.
Você pode verificar o status do SELinux com
sestatus
o comando.Se você deseja reativar o SELinux, verifique a documentação com antecedência. O sistema deve ser inicializado no modo permissivo primeiro para ser rotulado novamente (rótulos ausentes a serem aplicados) e quaisquer problemas aparentes devem ser corrigidos antes de alternar para o modo de imposição.
O SELinux geralmente requer alguma configuração: você pode ter arquivos em locais não incluídos na política padrão ou seu aplicativo pode exigir mais permissões do que a política padrão permite.
audit2allow
eaudit2why
são ferramentas úteis ao investigar os logs do SELinux e geralmente revelam rótulos de arquivo errados ou sugerem booleanos que podem resolver problemas.O SELinux também possui domínios permissivos que podem ser usados para desabilitar o SELinux para certos domínios (processos) enquanto deixa o restante da política no modo de imposição. No modo permissivo, os logs são gerados da mesma forma que no modo de imposição para acesso que, de outra forma, seria negado. Obviamente, rodar uma aplicação em domínio permissivo é praticamente o mesmo que rodar a aplicação SELinux desabilitada.