Я использую 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
.