Eu adicionei o rótulo SELinux svirt_sandbox_file_t
ao/home
chcon -Rt svirt_sandbox_file_t /home
O rótulo é mostrado usando:
[user@localhost ~]$ ls -Z
unconfined_u:object_r:svirt_sandbox_file_t:s0 Desktop
unconfined_u:object_r:svirt_sandbox_file_t:s0 Documents
...
Como posso remover o svirt_sandbox_file_t
rótulo novamente?
Tentei reiniciar, adicionei um /home/.autorelabel
para acionar a reetiquetagem, mas o rótulo não desaparece. Estou usando o Fedora 23.
Responder1
Eu acredito que se você definir /etc/selinux/config
para disabled
reiniciar. Em seguida, configure-o para enforcing
e reinicie; ele será rotulado novamente se você tiver problemas para reidentificá-lo. É estranho que o Restorecon não tenha funcionado.
Se você quiser redefinir as coisas da maneira mais difícil, o próprio diretório /home deve ser:
system_u:object_r:home_root_t
e cada diretório inicial do usuário (e os arquivos dentro dele) deve ser:
unconfined_u:object_r:user_home_dir_t:s0
Você pode defini-los com o chcon
comando ou usando uma combinação de semanage
erestorecon
chcon -t home_root_t /home
chcon -Rt user_home_dir_t /home/*
ou
semanage fcontext -a -t home_root_t /home
semanage fcontext -a -t user_home_dir_t /home/*
restorecon -R /home
por favor note quede um modo geral chcon
é usado para forçar uma mudança imediata, deixando os padrões no lugar, para que a restorecon
irá restaurá-los para os contextos padrão. No seu caso, isso parece ter dado errado por algum motivo.
Geralmente semanage fcontext
se destina a escrever um arquivo de contexto local para/etc/selinux/targeted/contexts/files/file_contexts.local
uma riqueza de informações sobre o contexto atual e os contextos padrão podem ser encontrados em:
/etc/selinux/targeted/contexts/default_contexts
/etc/selinux/targeted/contexts/files/file_contexts
/etc/selinux/targeted/contexts/files/file_contexts.homedirs
É possível que de alguma forma esses arquivos tenham sido danificados e, em geral, existem muitos subcontextos que podem não ser totalmente restaurados pelas ações acima, dependendo de como esses arquivos foram modificados. Pode ser uma boa ideia examinar esses arquivos e ver se você consegue encontrar o mapeamento de contexto adicionado e removê-lo dessa forma também.
Teoricamente, você também poderia pegar uma máquina virtual ou outra máquina (ou talvez apenas encontrá-las on-line) e copiar os padrões válidos conhecidos em seus diretórios apropriados e permitir que o sistema reetiquete para obter os padrões adequados. Isso também terá algumas deficiências.
No final do dia, será necessário um pouco de tentativa e erro, os comandos chcon/semanage listados acima devem fornecer traços gerais, mas é possível que alguns de seus subdiretórios tenham seus próprios contextos.
Alguns contextos adicionais que podem ser úteis (todos estes estão em /home/username seriam:
ls -laZ /home/username
##context########################### Directory##
unconfined_u:object_r:cache_home_t:s0 .cache
unconfined_u:object_r:config_home_t:s0 .config
unconfined_u:object_r:dbus_home_t:s0 .dbus
unconfined_u:object_r:gconf_home_t:s0 .gconf
unconfined_u:object_r:gconf_home_t:s0 .gconfd
unconfined_u:object_r:gpg_secret_t:s0 .gnupg
unconfined_u:object_r:gconf_home_t:s0 .local
unconfined_u:object_r:ssh_home_t:s0 .ssh
Observe que isso é baseado em meu diretório inicial, haverá mais coisas que você precisará procurar, mas se acertar a maioria delas, você deverá estar mais ou menos de volta ao caminho certo.