como remover o rótulo SELinux?

5

Eu adicionei o rótulo do SELinux svirt_sandbox_file_t a /home

chcon -Rt svirt_sandbox_file_t /home

O rótulo é exibido 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 rótulo svirt_sandbox_file_t novamente?

Eu tentei reinicializar, adicionei /home/.autorelabel para ativar a remarcação, mas o rótulo não desaparece. Eu estou usando o Fedora 23.

    
por m.s. 04.11.2015 / 18:54

1 resposta

3

Acredito que se você definir /etc/selinux/config para disabled reboot. Em seguida, defina-o como enforcing e reinicialize; ele será rotulado novamente se você tiver problemas para conseguir que ele seja reclassificado de outra forma. É estranho que restorecon não funcionou embora.

Se você quiser redefinir as coisas da maneira mais difícil, o 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) devem ser:

unconfined_u:object_r:user_home_dir_t:s0

Você pode defini-las com o comando chcon ou usando uma combinação de semanage e restorecon

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

observe que geralmente falando chcon é usado para forçar uma alteração imediata, deixando os padrões no lugar, para que restorecon os restaure para os contextos padrão. No seu caso, isso parece ter dado errado por algum motivo.

Geralmente, semanage fcontext destina-se a gravar um arquivo de contexto local em /etc/selinux/targeted/contexts/files/file_contexts.local

uma riqueza de informações sobre o contexto atual e o contexto 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 de alguma forma e, em geral, há 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ê pode encontrar o mapeamento de contexto adicionado e removê-lo dessa maneira também.

Teoricamente, você também pode usar uma máquina virtual, ou outra máquina (ou talvez encontrá-las on-line) e copiar os bons padrões conhecidos em seus diretórios adequados, e permitir que o sistema seja reclassificado para obter os padrões apropriados. Isso também terá algumas curtas embora.

No final do dia, um pouco de tentativa e erro será necessário, os comandos chcon / semanage listados acima devem dar-lhe os traços gerais, mas é possível que alguns dos seus subdiretórios tenham seus próprios contextos.

Alguns contextos adicionais que podem ser úteis (todos 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

Por favor, note que isto é baseado no meu diretório home, haverá mais que você pode ter que caçar, mas se você acertar a maioria deles, você deve estar mais ou menos de volta aos trilhos.

    
por 05.11.2015 / 01:05