Как изменить контекст безопасности для каталога в CentOS с помощью SELinux?

2284
Chloe

Я пытался изменить это, но это не позволило мне.

# 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 
audit.log
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 

CentOS релиз 6.8 (финал)

5

2 ответа на вопрос

2
Matthew Sanabria

Причина, по которой вы получили отказ в разрешении, заключается в том, что тип spamd_t не является допустимым типом SELiunx. Вам может понадобиться установить некоторые пакеты, чтобы сделать его допустимым типом. Я не уверен там. Но я проверю ваш ответ, чтобы убедиться, что вы следуете передовым методам.


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

Это добавит правило для рекурсивного изменения типа SELinux spamc_home_tна что угодно, /usr/local/spamassassinвключая каталог, но эти изменения не вступят в силу немедленно.

Чтобы эти изменения вступили в силу немедленно, я бы сразу же выполнил следующую команду:

restorecon -rv /usr/local/spamassassin 

Это восстановит контексты SELinux по умолчанию на основе правил, установленных системой. Фактически то же самое поведение, которое происходит, когда система перезагружается или создается новый файл. Это лучше, чем использовать, chconпотому что он читает из набора правил (который вы только что изменили с помощью приведенной выше команды), а не вносит случайные непостоянные изменения.

1
Chloe
# 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 ] 

https://wiki.centos.org/HowTos/SELinux#head-0f6390ddacfab39ee973ed8018a32212c2a02199

я использовал

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

который выкладывает кучу контекстов в комментарии, и я просто должен был догадаться, какой именно. Я не знаю, как выбрать правильный.

Похожие вопросы