Djangoサイトを実行しているGunicornプロセスを管理するためにスーパーバイザーを使用しましたが、この質問はスーパーバイザーによって管理されているものに関係する可能性があります。以前は、サーバーを管理および使用する唯一の人物であり、スーパーバイザーはrootとして実行されsupervisorctl restart myapp
、必要に応じてsudoを使用して実行していました。
サーバーは異なるサイトで作業する複数のユーザーをサポートする必要があり、各プロジェクトは他のユーザーのプロセスを再起動することなく、独自のgunicornプロセスを再起動できる必要があります。
このブログ投稿をフォローしました。
http://drumcoder.co.uk/blog/2010/nov/24/running-supervisorctl-non-root/
また、root以外のユーザーがSupervisorctlを使用できるようになりましたが、今では誰でも他のユーザーのプロセスを再起動できます。見た目では、スーパーバイザーにはユーザーごとのアクセス制御を行う方法がありません。
ユーザーがルートなしで自分のプロセスのみを再起動できるようにする方法についてのアイデアはありますか?
編集:私たちが考えたいくつかのことには、rootが所有するスクリプトを、suidビットを設定して、何も含まないものを記述し、所有してsupervisorctl restart myapp
いるユーザーのディレクトリに置くことが含まれますmyapp
。インターネットは、そのようなスクリプトが誤って実行された場合、安全でないと言っているようです。また、特定のユーザーからのコマンドをリッスンし、ユーザーに許可がある場合はスーパーバイザープロセスを再起動するカスタムデーモンを作成することも検討しました。より単純なソリューションが機能する場合、このアイデアは過度に複雑に思えます。