На моем компьютере с CentOS 7 запущен nginx. Каждый день я запускаю задание cron, которое генерирует новые параметры Диффи-Хеллмана. Они сохранены в /etc/ssl/dh/dhparam.pem
. Но SELinux не позволяет nginx читать этот файл.
Это строка в журнале ошибок nginx:
nginx[3189]: nginx: [emerg] BIO_new_file("/etc/ssl/dh/dhparam.pem") failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/etc/ssl/dh/dhparam.pem','r') error:2006D002:BIO routines: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 (или не устанавливая его на разрешающий)?
SELinux запрещает вам доступ к файлу, поскольку ты переехал вместо того скопировано Это откуда-то еще в файловой системе в ее окончательное местоположение. Таким образом, он сохранил свой исходный контекст безопасности, который не позволял Apache получить к нему доступ.
Чтобы решить эту проблему, пометьте файл с помощью restorecon
.
Чтобы избежать проблемы в будущем, скопируйте файлы (и при необходимости удалите оригинал) или используйте mv -Z
.