5

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

# 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 (финал)

2 ответа2

2

Причина, по которой вы получили отказ в разрешении, заключается в том, что тип 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
# 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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .