所以,我对托管和 Linux 等都是完全陌生的,所以如果我说错了,请原谅我。我还在学习 :)
我正在使用 Django 创建一个小型个人网站。我想把它放到网上看看是否一切正常。我从 linode 买了一台便宜的服务器,并使用 Digital-Ocean 的指南(讽刺的是)我让一切正常工作。当时我很开心。
但是......有一个主要问题,我已经阅读了一半的互联网,但找不到任何类似的问题:当发布请求大于〜4MB(上传图像等)时,文件将以错误的权限保存。
当请求大小小于 4MB 左右时,一切正常,没有任何问题。当请求大小较大时,所有内容都会上传并保存到服务器,没有任何问题,但从那时起我无法再从浏览器访问文件,并且网站不断对这些文件抛出 403 禁止。那是因为文件突然以错误的权限或类似的情况保存。
禁止文件的权限:
-rw-------- 1 [用户] root 7900880 5月12日08:24 filename1.pdf
工作文件的权限:
-rw-r--r-- 1 [用户] root 207420 5月11日19:36 filename2.jpg
我不确定工作文件是否完全正确,因为我认为它不需要 root。
我厌倦了这个问题。听起来很不合逻辑;文件大小与权限有什么关系!?事实上,我缺乏这方面的经验并没有让解决这个问题变得更容易。如果这里有人有黄金秘诀,我将非常感激:)
我在用着Nginx and uWSGI on 乌班图17.04与一个姜戈 1.11应用。
在我自己努力解决这个问题之后,我找到了答案。 AlexD 关于以不同方式处理大文件的理论是正确的。
来自 Django 的文档:
文件上传权限
默认值:无
将新上传的文件设置为的数字模式(即 0o644)。有关这些模式含义的更多信息,请参阅 os.chmod() 的文档。
如果未给出或为“无”,您将获得依赖于操作系统的行为。在大多数平台上,临时文件的模式为 0o600,从内存中保存的文件将使用系统的标准 umask 进行保存。
所以总结一下:较大的文件使用临时文件存储,默认情况下会获得0o600权限。通过将值设置为FILE_UPLOAD_PERMISSIONS
.
https://docs.djangoproject.com/en/1.11/ref/settings/#file-upload-permissions https://docs.djangoproject.com/en/1.11/ref/settings/#file-upload-permissions
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)