![如何解决 Nginx dav PUT 请求在 rename() 上失败(13:权限被拒绝)的问题?](https://linux22.com/image/127360/%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%20Nginx%20dav%20PUT%20%E8%AF%B7%E6%B1%82%E5%9C%A8%20rename()%20%E4%B8%8A%E5%A4%B1%E8%B4%A5%EF%BC%8813%EF%BC%9A%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D%EF%BC%89%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%9F.png)
当尝试PUT
在已存在的文件夹的根目录中访问 index.html 文件时,nginx 失败并显示:
[crit] 1181#0: *1 rename() "/opt/spool/nginx/client_temp/1/0000000001"
to "/opt/share/www/domain.tld/index.html-3hlCQ9iE" failed (13:
Permission denied), client: 1.2.3.9, server: host.domain.tld, request:
"PUT /www/domain.tld/index.html-3hlCQ9iE HTTP/1.1", host: "172.21.2.2"
环境
- 使用存储库
nginx-extras
中的 1.13.6-1entware-3x
。 - 在 Padavan 固件上运行。
$ grep www-rw /etc/passwd www-rw:x:1000:1001:Linux User,,,:/opt/share/www:/bin/sh $ grep www-w /etc/group www-w:x:1001: $ ls -l /opt/share/www drw-rw-r-- 2 www-rw www-w 4096 Feb 9 13:51 domain.tld $ ls -al /opt/share/www/domain.tld drw-rw-r-- 2 www-rw www-w 4096 Feb 9 13:51 . drwxr-xr-x 4 www-rw www-w 4096 Feb 9 13:51 .. $ ls -l /opt/spool/nginx drwxrwxrwx 7 www-rw root 4096 Feb 9 22:46 client_temp $ ls -l /opt/spool/nginx/client_temp drwx------ 2 www-rw www-w 4096 Feb 9 22:28 5
客户:
Cyberduck/6.3.3.27341
- 客户-用户:
www-rw
内容nginx.conf
user www-rw www-w;
server {
location /www {
root /opt/share;
client_body_temp_path /opt/spool/nginx/client_temp 1;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
# allow creating directories
create_full_put_path on;
dav_access user:rw group:r all:r;
autoindex on;
}
}
回归
user nobody nogroup;
dav_access user:rw group:r all:r;
#autoindex ...
- 客户-用户:
admin
我应该修复什么(在权限中?)来解决 Nginx dav 权限被拒绝错误?
答案1
$ ls -l /opt/share/www drw-rw-r-- 2 www-rw www-w 4096 Feb 9 13:51 domain.tld
没有经过专门测试,但是...x
在那里添加(执行)权限。
那是:
chmod 775 /opt/share/www/domain.tld
或者
chmod 755 /opt/share/www/domain.tld
x
对于某些您可能天真地认为只需要(写入权限)的事情,需要对目录执行(执行权限)w
。