ユーザーがファイルをアップロードできるようにするDjangoで構築された Web サイトがあります。次に、このファイルが処理され、他のファイルが多数作成されます。これらのファイルは、私のアカウントがメンバーであるユーザー/グループwww-dataによって所有されています。他の誰かがこれらのファイルを作成するスクリプトを作成し、残念ながら私がよく知らないプログラムを使用しています。これらのファイルには rw-r--r-- 権限があり、Web サイトからだけでなく手動でも削除できます。
次に、Web サイトは「 collectstatic 」 Django コマンドを呼び出し、これらのファイル (www-data が所有) を static_root ディレクトリにコピーします。これらのファイルを手動で削除することも、Web サイトでスクリプトを呼び出して削除することもできません。「権限が拒否されました」というエラーが表示されます。もともとこれらのファイルには、コピー元のファイルと同じパーミッション (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 です。