2013-09-10 11 views
0

У меня есть сайт, построенный в Django, который позволяет пользователю загружать файл. Затем этот файл обрабатывается и создается множество других файлов. Эти файлы принадлежат пользователю/группе www-data, членом которого является моя учетная запись. Кто-то другой написал сценарий, который создает эти файлы, и он использует программы, о которых я, к сожалению, не знаком. Эти файлы имеют разрешения rw-r-r--, и я могу удалить их вручную, а также через веб-сайт.(Django) Разрешение отклонено для удаления файла, принадлежащего www-данным (из которых я являюсь участником)

Веб-сайт затем вызывает «collectstatic» Команда Django, которая копирует эти файлы (принадлежащие www-данным) в каталог static_root. Эти файлы, которые я не могу удалить вручную, также не могу заставить веб-сайт вызывать скрипт для их удаления. Я получаю «разрешение отклонено». Первоначально эти файлы имели те же самые переходы, что и те, которые были скопированы из (rw-r-r--), но мне удалось заставить их иметь rw-rw-rw, расширив объект django StaticFilesStorage следующим образом:

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 этим летом, поэтому я действительно не знаком с этим. Любая помощь будет оценена по достоинству. Я не понимаю, как я не могу удалить файл, который имеет разрешение «написать» для группы, членом которой я являюсь.


Edit:

Где я думаю, что проблема заключается: Программа, которая создает файлы создает каталог для них, который имеет drwxrwxrwx разрешения. «collectstatic» копирует этот каталог в мой каталог static_root, а пермиссиями в этом новом каталоге являются drwxr-xr-x.

ответ

0

Чтобы удалить файл в unix-подобном окружении, вам понадобятся права на запись в каталоге, а не на сам файл.

Так что попробуйте chmod 775 каталог, в котором находятся ваши статические файлы, и он должен работать.

BTW: исправление StaticFilesStorage указанным выше способом не является хорошим решением imho и в любом случае не требуется.

+0

Большое спасибо за ваш ответ. _Chmod_ также говорит «разрешение отклонено», и у меня нет доступа к команде _sudo_. Созданный исходный каталог имеет полные права на rwx, но при вызове команды _collectstatic_ копия этого каталога имеет разрешения drwxr-xr-x. Я не понимаю, почему _collectstatic_ меняет разрешения. И я знаю, что мое исправление StaticFilesStorage - не лучшая идея - просто отчаяние! – Nagli

+0

Вызов chmod в каталоге работал, когда я делал это из скрипта python, который назывался «collectstatic», большое вам спасибо. – Nagli