Como eu mudo o contexto de segurança em um diretório no CentOS com o SELinux?

5

Eu tentei mudar isso, mas não me deixou.

# ls -dZ /usr/local/spamassassin
drwx------. spam spam system_u:object_r:usr_t:s0       /usr/local/spamassassin

# chcon -v --type=spamd_t /usr/local/spamassassin
changing security context of '/usr/local/spamassassin'
chcon: failed to change context of '/usr/local/spamassassin' to 'system_u:object_r:spamd_t:s0': Permission denied
%código%
type=AVC msg=audit(1483587389.449:354941): avc:  denied  { append } for  pid=31588 comm="spamd" name="spamfilter.log" dev=xvde ino=24109 scontext=unconfined_u:system_r:spamd_t:s0 tcontext=unconfined_u:object_r:usr_t:s0 tclass=file

Lançamento do CentOS 6.8 (Final)

    
por Chloe 05.01.2017 / 04:50

2 respostas

2

O motivo pelo qual você recebeu permissão negada é que o tipo spamd_t não é um tipo SELiunx válido. Você pode precisar de alguns pacotes para serem instalados para torná-lo um tipo válido. Não tenho certeza disso. Mas vou analisar sua resposta para garantir que você esteja seguindo as práticas recomendadas.

semanage fcontext -a -t spamc_home_t "/usr/local/spamassassin(/.*)?"

Isso adicionará uma regra para alterar recursivamente o tipo SELinux para spamc_home_t para qualquer coisa abaixo de /usr/local/spamassassin , incluindo o próprio diretório, mas essas alterações não terão efeito imediato.

Para que essas alterações entrem em vigor imediatamente, eu executaria o seguinte imediatamente após o comando acima:

restorecon -rv /usr/local/spamassassin

Isso restaurará os contextos padrão do SELinux com base nas regras que o sistema possui. Efetivamente, o mesmo comportamento que acontece quando o sistema é reinicializado ou um novo arquivo é criado. É melhor do que usar chcon porque ele lê a partir do conjunto de regras (que você acabou de modificar com o comando acima), em vez de fazer uma alteração ad-hoc não persistente.

    
por 08.01.2017 / 17:32
1
# chcon -vR --type=spamc_home_t /usr/local/spamassassin
changing security context of '/usr/local/spamassassin/.bash_profile'
changing security context of '/usr/local/spamassassin/.bash_logout'
changing security context of '/usr/local/spamassassin/.bashrc'
changing security context of '/usr/local/spamassassin/spamfilter.log'
changing security context of '/usr/local/spamassassin'


# semanage fcontext -a -t spamc_home_t "/usr/local/spamassassin(/.*)?"


# service spamassassin restart
Stopping spamd:                                            [  OK  ]
Starting spamd:                                            [  OK  ]

link

eu usei

# grep spamd_t /var/log/audit/audit.log | audit2allow

que cuspiu um monte de contextos em um comentário e eu só tive que adivinhar qual deles. Eu não sei como escolher o correto.

    
por 05.01.2017 / 23:28