我有一个内置Django的网站,允许用户上传文件。然后处理该文件并创建一堆其他文件。这些文件归我的帐户所属的用户/组www-data所有。其他人编写了创建这些文件的脚本,它使用了我不熟悉的程序。这些文件具有 rw-r--r-- 权限,我可以手动删除它们,也可以通过网站删除它们。
该网站然后调用“ collectstatic ” Django 命令将这些文件(由 www-data 拥有)复制到 static_root 目录。这些文件我无法手动删除,也无法让网站调用脚本来删除它们。我收到“权限被拒绝”错误。最初这些文件与从 (rw-r--r--) 复制的文件具有相同的权限,但我设法通过扩展 django StaticFilesStorage 对象让它们具有 rw-rw-rw,如下所示:
from django.contrib.staticfiles.storage import StaticFilesStorage
import os
class MyStaticFilesStorage(StaticFilesStorage):
def save(self, name, content):
os.umask(0)
super(MyStaticFilesStorage, self).save(name, content)
今年夏天我才刚刚开始使用 Django 和 Python,所以我真的不太熟悉。任何帮助,将不胜感激。我不明白我如何无法删除对我所属的组具有“写入”权限的文件。
编辑:
我认为问题出在哪里:创建文件的程序为它们创建了一个具有 drwxrwxrwx 权限的目录。“ collectstatic ” 将此目录复制到我的 static_root 目录,并且该新目录的权限为 drwxr-xr-x。