Как заставить NGinx игнорировать права доступа к файлам?

Я использую NGinx для обслуживания статических сайтов, и иногда есть некоторые файлы с 640 разрешениями вместо 644. Для таких сайтов NGinx говорит "403 Forbidden".

Есть ли способ сказать NGinx игнорировать разрешения на файлы и обслуживать любой файл в public каталог?

PS

Да, я могу изменить права доступа к файлу chmodНо это случается часто, и я устал от этого.

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

4 ответа

Решение

Ваш вопрос - чепуха.

Пара пользователь / группа, назначенная рабочему процессу (процессам) nginx, определяется директивой пользователя. Измените его так, чтобы он имел права на чтение по отношению к пользователям и группам вашей ОС.

Права доступа к файлам находятся на уровне операционной системы, а не на уровне nginx. поэтому вам нужно сделать все, что помещает файлы в каталог, чтобы обновить разрешения, или вам нужно изменить nginx, чтобы он работал как пользователь / группа, у которой есть права на чтение файла.

Только процессы, принадлежащие пользователю root, могут иметь доступ ко всему, независимо от разрешений. nginx действительно не должен запускаться от имени пользователя root.

Что вы можете сделать, это изменить ACL для каталога и его содержимого, чтобы один или несколько пользователей или групп могли иметь доступ на чтение независимо от прав доступа к файлу. Вы должны прочитать man setfacl прежде чем поиграть с ним, но вот короткая инструкция:

Сначала сделайте резервную копию текущих разрешений:

sudo getfacl -R /path/to/public_dir > /tmp/publicacl.bak

Применить доступ на чтение ко всем существующим файлам в /path/to/public_dir и все подкаталоги

sudo setfacl -R -m u:NGINXUSR:rX /path/to/public_dir 

Установите ACL по умолчанию на /path/to/public_dir и все его подкаталоги, которые будут применяться ко всем новым файлам и каталогам, созданным или загруженным в эти каталоги

sudo setfacl -R -m d:u:NGINXUSR:rX /path/to/public_dir 

Если что-то пойдет не так, вы можете вернуться к более ранним спискам ACL, выполнив

sudo setfacl --restore=/tmp/publicacl.bak

Простым решением было бы запустить задание cron для добавления разрешения на чтение для пользователя nginx ко всем файлам в вашей общей папке, в любом случае, если вам не нужны разрешения на чтение в общей папке

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