2017-01-12 5 views
1

変更があったときにrun.wsgiスクリプトを動的に再読み込みできるmod_wsgiを使用しています。私のアプリはたくさんのファイルを持っていますが、run.wsgiだけが変更を監視されています。ドキュメントは、アプリファイルが変更されたときにrun.wsgiに触れることをおすすめします。これはうまくいきます。タッチでwsgiファイルの時間を変更する別のユーザーの能力を許可する-m

私の問題は、自分のサイトのドキュメントルートとは別の(専用の)ユーザーディレクトリに(安全のために)アプリケーションがあり、状況によってはサイトを所有するユーザーが他のユーザのディレクトリにあるrun.wsgiファイルに「触れてください」(アプリのリロードを強制するため)。

usermod -a -G commongrp site-user 
usermod -a -G commongrp app-user 
chgrp commongrp run.wsgi 
chmod 770 run.wsgi 

をサイト利用者が実際に WSGIを変更することができます:そして、サイト利用者は、私はすでにのような「共通」のグループと、更新権限を作成しましたではないtouch -m /home/app-user/app/run.wsgi

touch: setting times of ‘/home/app-user/app/run.wsgi’: Operation not permitted 

することができますファイルが、私はそれをしたくありません。私はちょうどを変更せずにファイルの修正を "偽造"したいと思っています。 Linuxパーミッションでこれを行うための安全な方法はありますか?これを行うには良い方法がありますか?

答えて

1

sudoを使用して、サイトユーザーがtouchをapp-userとして実行できるようにすることをお勧めします。あなたのsudoersがvisudoを持つファイルと、このようなエントリを作成して編集します。

site-user ALL=(app-user) NOPASSWD: /usr/bin/touch 

その後、あなたは、sudoでいつでもアプリをユーザーとして実行:

site-user$ sudo -u app-user /usr/bin/touch -m /home/app-user/app/run.wsgi 
1

あなたがデーモン(優先設定がある)のmod_wsgiのモードではなく、埋め込みモード、およびデーモンモードプロセスは、あなたのようにシステムにアクセスすることができますユーザーとして実行するように設定されているを使用している場合は、代わりに送信することができますデーモンモードプロセスへのシグナルはプロセスを再起動させます。標準的な信号は、正常シャットダウンのためにSIGINTSIGTERMです。デーモンモードプロセスが正常なタイムアウトで構成されている場合は、SIGUSR1を使用することもできます。これにより、プロセスがシャットダウンするまでの時間が長くなります。

WSGIスクリプトファイルを変更できる場合は、要求を処理する前にデーモンモードプロセスを再起動する必要があるかどうかを決定する関数を提供することもできます。これは、他のファイルのタイムスタンプをチェックして再起動を行うかどうかを判断する機能をコーディングする必要があります。

これについての詳細は、mod_wsgiメーリングリストの使用をお勧めします。

関連する問題