2017-07-20 11 views
0

パッケージの作業ディレクトリを作成するdjangoアプリケーションがあります。これはで行われますDjangoが作成したフォルダは削除できませんCentOS 7のapache

if not os.path.exists(dest): 
      os.makedirs(dest) 

フォルダの作成は素晴らしい作品が、Djangoアプリケーションが後で非常に同じフォルダを削除しようとすると、私が取得する「アクセス許可が拒否されました」。

djangoによって作成されたフォルダとファイルのアクセス権は、rootが所有し、apacheは所有していないようです。なぜそれは、Apacheがそれを作成した場合、Apacheが所有していないのですか?私はどのようにしてApacheとDjangoを作成してApacheとして作成できますか?

答えて

0

たぶん、このヘルプあなた Permission problems when creating a dir with os.makedirs (python)

os.makedirs関数の引数modeは、いくつかのシステムでは無視される可能性があり、公式Pythonドキュメントによると

、それが大切現在のumaskを無視されていないシステム上でマスクされていますでる。

どちらの方法でも、os.chmod関数を使用してモードを強制的に0777にすることができます。

+0

おかげで、:

はUIDを設定するには –

0

最適な解決策は、djangoがwsgi.pyで使用するuidを設定することです。明示的にユーザーを現在のpythonプロセスの 'apache'に設定すると、作成されるすべてのファイルはユーザーのapacheに属します。私はNicos Mouzourssの答えの後でこれを見つけました。知っているか、常にapacheのユーザまたはグループなどのファイルを作成するために、それを変更するために有用であろうが、それは確かなソリューションです

import os, pwd 
os.setuid(pwd.getpwnam('apache').pw_uid) 
関連する問題