Назад | Перейти на главную страницу

В разрешении отказано, когда Nginx пытается записать файл изображения

Я использую Nginx для сервера Linux и у меня есть эта папка /usr/local/openresty/nginx/webfolder/img где я хочу, чтобы nginx сохранял мои загруженные файлы изображений.

Итак, вот что я сделал:

1) Я изменил владельца каталога на www-data пользователь в www-data группа:

chown -R www-data:www-data /usr/local/openresty/nginx/webfolder/img

2) Затем я обновил разрешения каталога:

sudo chmod 0600 /usr/local/openresty/nginx/webfolder/img

Часть ошибки загрузки Lua (где я регистрирую ошибку):

fileToSave, errMessage = io.open(savefiletarget, "w+b")
                        if not fileToSave then
                            --ngx.say("failed to open file ", savefiletarget)
                            ngx.log(ngx.NOTICE,'failed to save file : '..savefiletarget..' reason: '..errMessage);
                            ngx.say('{"filename" : "'..filenametosave..'","status" : 0 ,"message":"failed to open file"}')
                            return
                        end

Сейчас мой журнал ошибок все еще показывает Permission Denied когда я пытаюсь загрузить файл.

Я предполагаю www-data правильно ли использует nginx? Так почему я все еще не могу записать файл?

Вы дали каталогу неправильные разрешения. 0600 дам читать и записывать разрешения на каталог. Но для доступа к каталогу вам также понадобится выполнять разрешение. Вот пример:

[jenny@temeraire sf] $ mkdir test1
[jenny@temeraire sf] $ chmod 0600 test1
[jenny@temeraire sf] $ touch test1/foo
touch: test1/foo: Permission denied
[jenny@temeraire sf] $ chmod 0700 test1
[jenny@temeraire sf] $ touch test1/foo
[jenny@temeraire sf] $ ls -ld test1/foo
-rw-r--r--  1 jenny  staff  0 Jun  5 07:46 test1/foo

Ищите user директиву в /etc/nginx/nginx.conf, который является основным файлом конфигурации.

Если этого нет, то вы можете проверить запущенный процесс с помощью такой команды, как ps -fwwC nginx. ID пользователя, вероятно, будет в самом левом столбце.

Затем вы можете узнать, есть ли у этого пользователя определенные привилегии для определенного файлового режима, например sudo -u nginx test -w /usr/local/openresty/nginx/webfolder/img && { echo YUP; } || { echo NOPE; } который вернет errexit> 0 (NOPE), если пользователь «nginx» не имеет права записи в этот каталог.

Если нет, то вам, вероятно, потребуется добавить пользователя в группу разрешений, которой принадлежит этот каталог, и изменить файловый режим каталога, чтобы разрешить групповую запись, например sudo useradd -aG www-data nginx; sudo chmod g+w -c /usr/local/openresty/nginx/webfolder/img.