Lan*_*oss 6 django permissions ubuntu nginx uwsgi
所以,我对托管和 Linux 以及所有方面都是全新的,所以如果我说错了,请原谅我。我还在学习 :)
我正在使用 Django 创建一个小型个人网站。我想把它放到网上看看是否一切正常。我从 linode 获得了一个便宜的服务器,并使用了 Digital-Ocean 的指南(讽刺的是)我让一切正常。当时我很开心。
但是......有一个主要问题,我已经阅读了一半的互联网并且找不到任何类似的问题:当发布请求大于~4MB(上传图像等)时,文件以错误的权限保存。
当请求大小小于 4MB 时,一切正常,没有任何问题。当请求大小较大时,所有内容都会上传并保存到服务器,没有任何问题,但从那时起,我无法再从浏览器访问文件,并且该站点不断向这些文件抛出 403 禁止访问。那是因为文件突然以错误的权限或类似的方式保存。
禁止文件的权限:-rw------- 1 [user] root 7900880 May 12 08:24 filename1.pdf
工作文件的权限:-rw-r--r-- 1 [user] root 207420 May 11 19:36 filename2.jpg
我不确定即使工作文件是否完全正确,因为我认为它不需要 root。
我已经厌倦了这个问题。这听起来很不合逻辑;文件大小与权限有什么关系!?事实上,我缺乏这方面的任何经验并没有让解决它变得更容易。如果这里有人有金尖,我会很感激:)
我在Ubuntu 17.04上使用Nginx和uWSGI以及Django 1.11应用程序。
在自己解决这个问题之后,我想通了。AlexD 以不同方式处理大文件的理论是正确的。
来自 Django 的文档:
FILE_UPLOAD_PERMISSIONS
默认值:无
将新上传的文件设置为的数字模式(即 0o644)。有关这些模式含义的更多信息,请参阅 os.chmod() 的文档。
如果未给出或为 None,您将获得依赖于操作系统的行为。在大多数平台上,临时文件的模式为 0o600,从内存中保存的文件将使用系统的标准 umask 进行保存。
所以总结一下:较大的文件使用临时文件存储,默认情况下将获得 0o600 权限。通过将值设置为 ,可以轻松解决该问题FILE_UPLOAD_PERMISSIONS。
https://docs.djangoproject.com/en/1.11/ref/settings/#file-upload-permissions
| 归档时间: |
|
| 查看次数: |
932 次 |
| 最近记录: |