Como ler / alterar o contexto do SELinux na imagem ext4 montada a partir do sistema não-SELinux?

3

Eu tenho um sistema Linux (Arch Linux) sem suporte ao SELinux. Eu não gostaria de configurar esse suporte no meu sistema. Agora, eu tenho uma imagem de volume ext4 que é conhecida por ter algum contexto SELinux configurado em seus arquivos. Eu preciso ler e alterar esse contexto para certos arquivos. Quando eu montar essa imagem e ls -lZ , recebo um ? em vez de contexto.

Como faço para acessar & alterar o contexto do SELinux nos arquivos se eu não tiver o SELinux habilitado em todo o sistema? Se isso for impossível, então qual é a configuração mínima do SELinux que não influenciará o sistema como um todo, mas permitirá que eu altere os contextos dentro de uma imagem montada?

    
por MarSoft 02.05.2016 / 23:34

1 resposta

3

O contexto do SELinux é armazenado nos atributos estendidos do arquivo ( xattr , man 5 attr ). Ferramentas para trabalhar com elas estão disponíveis em core/attr package.

Atributos, incluindo o contexto do SELinux, podem ser recuperados com getfattr . Há uma ressalva: por padrão, getfattr lista apenas os atributos do user. namespace; O atributo selinux que precisamos está em security namespace. Portanto, precisamos passar a opção -m - para solicitar atributos para todos os namespaces ( -d é para despejar valores e nomes):

$ getfattr -m - -d bin/sh
# file: bin/sh
security.selinux="u:object_r:system_file:s0"

Para alterar o contexto do selinux, usei a ferramenta setfattr , que exigia privilégios de root:

$ sudo setfattr -n security.selinux -v u:object_r:shell_exec:s0 bin/sh
$ getfattr -m - -d bin/sh
# file: bin/sh
security.selinux="u:object_r:shell_exec:s0"
    
por 04.05.2016 / 11:22