como remover o rótulo SELinux?

como remover o rótulo SELinux?

Eu adicionei o rótulo SELinux svirt_sandbox_file_tao/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_trótulo novamente?

Tentei reiniciar, adicionei um /home/.autorelabelpara acionar a reetiquetagem, mas o rótulo não desaparece. Estou usando o Fedora 23.

Responder1

Eu acredito que se você definir /etc/selinux/configpara disabledreiniciar. Em seguida, configure-o para enforcinge 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 chconcomando ou usando uma combinação de semanageerestorecon

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 restoreconirá restaurá-los para os contextos padrão. No seu caso, isso parece ter dado errado por algum motivo.

Geralmente semanage fcontextse 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.

informação relacionada