Django 사이트를 실행하는 Gunicorn 프로세스를 관리하기 위해 감독자를 사용했지만이 질문은 감독자가 관리하는 모든 것과 관련이 있습니다. 이전에는 서버를 관리하고 사용하는 유일한 사람이었으며 관리자는 루트 권한으로 실행했으며 supervisorctl restart myapp
필요할 때 sudo를 사용하여 실행 했습니다.
이제 우리 서버는 다른 사이트에서 작업하는 여러 사용자를 지원해야하며 각 프로젝트는 다른 사용자의 프로세스를 다시 시작하지 않고도 자체 gunicorn 프로세스를 다시 시작할 수 있어야합니다.
나는이 블로그 게시물을 따랐다.
http://drumcoder.co.uk/blog/2010/nov/24/running-supervisorctl-non-root/
루트가 아닌 사용자가 supervisorctl을 사용하도록 허용했지만 이제는 누구나 다른 사람의 프로세스를 다시 시작할 수 있습니다. 외관상으로, 감독자는 사용자 별 액세스 제어를 수행 할 방법이 없습니다.
누구나 루트없이 자신의 프로세스 만 다시 시작할 수있게하는 방법에 대한 아이디어가 있습니까?
편집 : 우리가 생각한 것은 루트가 소유 한 스크립트를 아무것도 포함하지 않는 suid 비트 세트로 스크립트를 작성하고 소유 한 supervisorctl restart myapp
사용자의 디렉토리에 넣는 것입니다 myapp
. 인터넷은 그러한 스크립트가 잘못 수행되면 안전하지 않다고 말하는 것 같습니다. 또한 특정 사용자의 명령을 수신하고 사용자에게 권한이있는 경우 감독자 프로세스를 다시 시작하는 사용자 지정 데몬 작성을 고려했습니다. 더 간단한 솔루션이 효과가 있다면이 아이디어는 지나치게 복잡해 보입니다.