775権限にもかかわらず、所有者とグループメンバーの書き込み動作は異なります。

775権限にもかかわらず、所有者とグループメンバーの書き込み動作は異なります。

次の行を使用して、fstabを介してリモート共有をマウントしました。

//path/to/target /media/f cifs gid=<mygroup's id>,dir_mode=0775,file_mode=0775 0 0

したがって、以下のすべての項目には/media/f次の権限があります。

$ ls -al
drwxrwxr-x 0 root mygroup ...

Django Webwww-dataアプリケーションは 。しかし、これはうまくいきません。権限エラーが発生します。mygroup/media/f

この問題を解決するために、インストール行を設定に変更しました。両方そして、マウントポイントにuserとgroupを持たgidせます。今私のマウントポイントは次のとおりです。uidwww-datamygroup

$ ls -al
drwxrwxr-x 0 www-data mygroup ...

みんな大丈夫です。

質問:私のWebアプリケーションが/media/fフォルダを所有しているときはフォルダに書き込むことができますが、フォルダがwww-data:mygroup所有しているときは書き込めないのはなぜですかroot:mygroup(フォルダがwww-dataのメンバーであることを知っていますmygroup

www-data(ユーザーの)グループメンバーシップを「固定」するために再インストールして再起動しようとしましたが、mygroup機能しませんでした。

奇妙なことは、root:mygroup所有権が設定された後にsudo su www-data端末で書き込もうとすると、/media/fすべてがうまく機能することです。そこで何が起こったのか知っていますか?uwsgiこれは、djangoを実行するプロセスが私が与えたいフル権限で実際に実行されていないのと同じですwww-data

アイデア?

答え1

これは上記の文脈において非常に特定であることがわかった。私は皇帝パターンを使用してウェブサイトを提供するためにuWSGIを使用しています。パラメータuid=www-dataとを設定しましたgid=www-data。これは私のクライアントプロセスがユーザーとグループに関連する権限を持つことを期待していました。www-data またwww-data(ユーザー)が属するグループに関連する権限です。仮定は間違った。 Vassalsは実行されません(デフォルトでは)どの補足グループID。

uWSGI(最新バージョン)がこの問題を解決したことがわかりました。add-gid=mygroupuWSGI設定でこれを手動で指定できます。このパラメータを複数回指定することで、必要に応じて移動プロセスに多くのgidを追加できます。この機能はuWSGI 1.9.15以降でのみ利用可能であるため、この方法を使用するにはアップグレードする必要があります。

完全な書面記録ここ

関連情報