Nginx/Django 文件上传权限

Posted

技术标签:

【中文标题】Nginx/Django 文件上传权限【英文标题】:Nginx/Django File Upload Permissions 【发布时间】:2017-11-18 03:25:29 【问题描述】:

今天我注意到,每当我通过我的 Django 站点上传文件时,文件都会以文件权限 0600 上传,这意味着每当非 root 用户想要查看文件 (nginx) 时,都会显示 403。

据我所知,这只是今天才开始发生的。我已经检查了 Django 设置文件中的 file_upload_permissions 和 file_upload_directory_permissions,它们都设置为 0644。

我最近没有进行任何 Linux/Django 更新,所以这不应该是原因,非常感谢任何帮助。

谢谢,

山姆

【问题讨论】:

【参考方案1】:

如果您最近切换到 Python 3,请查看 here 以获取 Python 3 中八进制文字的引用。按以下方式更改设置应该可以解决此问题:

FILE_UPLOAD_PERMISSIONS = 0o644

This 也有助于编写兼容 Python 2-3 的代码。

【讨论】:

对不起,我在整个项目中只使用了 Python 3。我会尝试添加“o”,看看是否有帮助,谢谢你的建议。 我明白了,你试过了吗?只是要求让读者更清楚。 成功了!!!非常感谢,谁知道一个简单的 'o' 会产生如此大的不同哈哈 @ArtemBernatskyi,正如他们的文档中所述,Django 旨在与不同版本的 Python 兼容。因此,假设您使用的是 Python 2.7,则可以使用 0o644 或 0644,但如果底层 Python 安装是版本 3,则必须使用 0o644。无论如何,使用新的表示是最安全的,因此强烈推荐。我希望这会有所帮助。 点赞!!伟大的。这真的很有帮助。我花了一整天的时间才找到解决方案。

以上是关于Nginx/Django 文件上传权限的主要内容,如果未能解决你的问题,请参考以下文章

linux服务部署nginx+django+mysql

从windows向Linux上传文件,为啥用RZ命令上传文件后,文件权限为600,而其他文件权限都为644?

Linux,上传文件、重命名、修改权限、切换用户

为啥使用 sftp 上传文件后文件权限发生变化?

django/文件上传权限

共享电脑里面的文件可以删除,不能上传文件