次の行を使用して、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
せます。今私のマウントポイントは次のとおりです。uid
www-data
mygroup
$ 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=mygroup
uWSGI設定でこれを手動で指定できます。このパラメータを複数回指定することで、必要に応じて移動プロセスに多くのgidを追加できます。この機能はuWSGI 1.9.15以降でのみ利用可能であるため、この方法を使用するにはアップグレードする必要があります。
完全な書面記録ここ。