Ошибка 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
Это было это.