我在ubuntu服务器上有一些媒体内容。我可以上传文件。但是当我尝试加载文件时,它会显示 403 forbidden nginx / 1.10.3(ubuntu)。在文件权限中,它会显示 rw -------- 。
如何在没有错误的情况下检索所有内容? 我不熟悉Ubuntu
我使用此代码段来恢复文件。但是,它只能在一次性工作。一段时间后,它显示相同的错误。
sudo chmod -R 664 /home/django/media/image/
sudo chmod -R a+X /home/django/media/image/
答案 0 :(得分:0)
nginx用户必须能够读取这些文件。您可以使用组权限来允许。此外,wsgi用户必须设置umask,以便它创建的文件对组也是可读的。
在您的情况下,您的wsgi用户看起来像是umask 077
,这使得它创建的文件只能由所有者(rw--------
)读取。因此nginx没有读取权限。而是使用umask 027
,它将允许组用户访问这些文件,但不能写入它们(nginx没有理由拥有写访问权限。)
例如,如果您使用gunicorn作为wsgi服务器,则可以使用gunicorn标记--group www --umask 027
。确保gunicorn和nginx用户都属于www
组。
修复类似的权限。
# set group to `www` for all files recursively
sudo chgrp www -R /home/django/media/
# set all files to be read/write by owner and readable by group `www`
find /home/django/media/ -type f -exec chmod 640 {} ;
# same with directories +execute
find /home/django/media/ -type d -exec chmod 750 {} ;
或者,对文件使用644
,对目录使用755
,对于umask使用022
。然后,组权限并不重要,因为所有用户都获得了读访问权限。
后一个选项不是安全性最佳实践,但它可能没问题,只要您只给django用户写入权限。