Ошибка Nginx 403 для одного файла, в то время как другие работают

У меня есть простой сервер Flask/Nginx и 3 файла в папке /opt/hosting/files:

[adam@localhost]$ namei -om /opt/hosting/files
    f: /opt/hosting/files
     dr-xr-xr-x root  root  /
     drwxr-xr-x root  root  opt
     drwxr-xr-x root  root  hosting
     drwxr-xr-x nginx nginx files

В папке files У меня есть 3 файла: два изображения и большой почтовый файл:

[adam@localhost]$ ls -lh /opt/hosting/files/
total 424M
-rwx-----x. 1 nginx nginx  19K 03-06 01:29 file1.jpg
-rwx-----x. 1 nginx nginx  18M 03-06 03:34 file2.png
-rwxr-xr-x. 1 nginx nginx 406M 07-07 13:07 file3.zip

Я обслуживаю эти файлы, и хотя первые два появляются без проблем, я получаю 403 Forbidden для zip-файла как через www, так и через wget. Я думаю, что права доступа к каталогам установлены правильно, так как два других файла в порядке. Свойства файла Zip еще выше, так что это не должно быть проблемой.

Я пытался с помощью chown root:root а также chown 777 для файла и папок и не может получить доступ к файлу в любом случае. После внесения изменений я перезагружаю nginx sudo systemctl restart uwsgi, SELinux показывает Enforcing,

В чем здесь проблема?

1 ответ

Решение

Понял. Чтение комментария tinesoft здесь заставило меня проверить контекст файлов SELinux (да, я использую CentOS, забыл упомянуть об этом), и это было:

[adam@localhost]$ ls -lZ /opt/hosting/files
-rwx-----x. nginx nginx unconfined_u:object_r:httpd_sys_content_t:s0 file1.jpg
-rwx-----x. nginx nginx unconfined_u:object_r:httpd_sys_content_t:s0 file2.png
-rwxr-xr-x. nginx nginx unconfined_u:object_r:user_home_t:s0 file3.zip

Затем, следуя документации SELinux из RedHat, мне удалось изменить тип контекста SELinux с user_home_t в httpd_sys_content_t с помощью

sudo chcon -t httpd_sys_content_t file3.zip

Это было это.

Другие вопросы по тегам