SELinux не позволяет Nginx читать файл [дубликат]

На этот вопрос уже есть ответ:

На моей машине с CentOS 7 запущен nginx. Каждый день я запускаю задание cron, которое генерирует новые параметры Диффи-Хеллмана. Они сохранены в /etc/ssl/dh/dhparam.pem . Но SELinux не позволяет nginx читать этот файл.

Это строка в журнале ошибок nginx:

nginx [3189]: nginx: [Emerg] BIO_new_file ("/ etc / ssl / dh / dhparam.pem") не удалось (SSL: ошибка: 0200100D: system библиотека: fopen: В доступе отказано: fopen ('/ etc / ssl / dh / dhparam.pem', 'r') ошибка: 2006D002: подпрограммы BIO: BIO_new_file: system lib)

Это журнал аудита:

type=AVC msg=audit(1473285202.181:334): avc:  denied  { open } for  pid=1393 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646309 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file
type=AVC msg=audit(1473285832.647:743): avc:  denied  { open } for  pid=2958 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646309 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file
type=AVC msg=audit(1473287010.821:803): avc:  denied  { open } for  pid=3083 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646316 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file
type=AVC msg=audit(1473287142.871:826): avc:  denied  { open } for  pid=3118 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646309 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file
type=AVC msg=audit(1473287172.480:843): avc:  denied  { open } for  pid=3134 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646309 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file
type=AVC msg=audit(1473287681.994:866): avc:  denied  { open } for  pid=3189 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646309 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file

Я не очень хорошо знаком с SELinux (я знаю, что должен этому научиться): как я могу предоставить доступ к nginx, не отключая SELinux (или не устанавливая его на разрешающий)?

3
задан 8 September 2016 в 02:44
1 ответ

SELinux отказывает вам в доступе к файлу, поскольку вы переместили вместо скопировали его откуда-то еще в файловой системе в его окончательное расположение. Таким образом, он сохранил свой исходный контекст безопасности, который не позволял Apache получить к нему доступ.

Чтобы решить проблему, пометьте файл с помощью restorecon .

Чтобы избежать проблемы в будущем, скопируйте файлы (и при необходимости удалите оригинал) или используйте mv -Z .

7
ответ дан 3 December 2019 в 05:11

Теги

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