Como copiar o contexto do SELinux de um diretório e aplicá-lo a outro diretório?

4

Como posso copiar o contexto do SELinux de um diretório e aplicá-lo a outro?

Exemplo de cenário de uso é ao criar um novo usuário local fora do caminho padrão / home, como este:

$ sudo useradd -d /websites Tim

Isso cria o diretório home de Tim /websites e define as permissões e a propriedade corretas para o Tim, no entanto, seu contexto do SELinux é diferente de outros usuários, como visto aqui:

# ls -dZ /websites
drwx------. Tim Tim system_u:object_r:etc_runtime_t:s0 /websites

O que eu quero fazer é copiar o contexto do SELinux do diretório / home de outro usuário e aplicá-lo ao diretório /websites do Tim.

O contexto do SELinux de outro usuário é assim:

# ls -Z /home/
drwx------. Ben  Ben  unconfined_u:object_r:user_home_dir_t:s0 Ben
drwx------. Bob  Bob  unconfined_u:object_r:user_home_dir_t:s0 Bob
drwx------. lexy lexy unconfined_u:object_r:user_home_dir_t:s0 lexy
    
por Alxs 29.03.2017 / 09:36

1 resposta

5

Isso é feito simplesmente usando as sinalizações -a e -e como em:

semanage fcontext -a -e /home/Ben '/websites(/.*)?' 

-a : add,

-e : equivalência

Depois disso, você terá que executar o restorecon como em:

restorecon -vvRF /websites

e o novo contexto de arquivo será aplicado.

-v : mostre as alterações nos marcadores de arquivo,

-R : recursivo,

-F : redefinição de força do contexto

Também é possível alterar o contexto do arquivo SELinux com:

semanage fcontext -a -t httpd_sys_content_t '/website(/.*)?'

Isso atribuirá o novo contexto de arquivo independentemente.

-a : add,

-t : type

    
por 31.03.2017 / 23:59