web-dev-qa-db-ja.com

ログファイルの書き込み時に権限が拒否されました

私はubuntu 13.04を使用しています。 Sudo service uwsgi startを使用してuwsgiを実行しています

Djangoとして/home/shwetanka/logs/mysite/mysite.logとしてログファイルを構成しました

しかし、私はこのエラーを受け取っています-

ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/home/shwetanka/logs/mysite/mysite.log'

どうすれば修正できますか?これは、uwsgiをSudoとして実行する場合には発生しません。

15
Shwetanka

次のように、chmodコマンドを使用して権限を修正する必要があります:chmod 775 /home/shwetanka/logs/mysite/mysite.log

ls -l /home/shwetanka/logs/mysite/mysite.logでファイルの所有者を確認し、uwsgiに書き込み可能にします。ファイルがuwsgiによって所有されていない場合は、chownコマンドを使用する必要があります。

サービスが実行されているユーザー名をps aux | grep 'uwsgi'で確認します。

現時点でセキュリティがそれほど重要ではない場合は、chmod 777 /home/shwetanka/logs/mysite/mysite.logを使用してください。しかし、それはこれが行われる方法ではありません。

これを行う最も安全な方法は、ファイルの所有者とグループを確認し、必要に応じてそれらを変更し、それに応じてアクセス許可を調整することです。

例を挙げましょう。

/home/shwetanka/logs/mysite/mysite.logにファイルがあり、コマンドls -l /home/shwetanka/logs/mysite/mysite.logで次の出力が得られた場合:

-rw-rw-r-- 1 shwetanka shwetanka 1089 Aug 26 18:15 /home/shwetanka/logs/mysite/mysite.log

これは、ファイルの所有者がshwetankaであり、グループもshwetankaであることを意味します。次に、rwxビットを読み取ります。最初のグループはファイル所有者に関連しているため、rw-は、ファイルが所有者によって読み取りおよび書き込み可能であり、グループによって読み取りおよび書き込み可能であり、他のユーザーによって読み取り可能であることを意味します。ファイルの所有者がファイルに何かを書き込もうとしているサービスであること、またはファイルがサービスのグループに属していることを確認する必要があります。そうしないと、permission deniedエラーが発生します。

USWGIサービスで使用されるユーザー名uwsgiがあり、上記のファイルをそのサービスで書き込み可能にしたい場合は、次のようにファイルの所有者を変更する必要があります。

chown uwsgi /home/shwetanka/logs/mysite/mysite.log。所有者(最初のrwxグループ)の書き込みビットはすでに1に設定されているため、そのファイルはUWSGIサービスによって書き込み可能になります。さらに質問がある場合は、コメントを残してください。

28
Luka

または、uwsgiのumaskオプションを設定することもできます( http://uwsgi-docs.readthedocs.org/en/latest/Options.html#umask )。

同じ状況で、www-dataを介してuwsgiを実行していて、buildoutを使用しました。したがって、私の場合、この修正は次のようになりました。

[uwsgi]
recipe = buildout.recipe.uwsgi
xml-socket = /tmp/uwsgi.sock
xml-master = True
xml-chmod-socket = 666
xml-umask = 0002
xml-workers = 3
xml-env = ...
xml-wsgi-file = ...

このログファイルの権限が664になった後、www-dataグループのグループメンバーもそれに書き込むことができます。

1
Gleb