Saya telah menggunakan pengawas untuk mengelola proses Gunicorn menjalankan situs Django, meskipun pertanyaan ini dapat berhubungan dengan apa pun yang dikelola oleh pengawas. Sebelumnya saya adalah satu-satunya orang yang mengelola dan menggunakan server kami, dan penyelia hanya menjalankan sebagai root dan saya akan menggunakan sudo untuk berjalan supervisorctl restart myapp
ketika dibutuhkan.
Sekarang server kami harus mendukung banyak pengguna yang bekerja di situs yang berbeda, dan setiap proyek harus dapat memulai kembali proses gunicorn mereka sendiri tanpa dapat memulai kembali proses pengguna lain.
Saya mengikuti posting blog ini:
http://drumcoder.co.uk/blog/2010/nov/24/running-supervisorctl-non-root/
dan dapat memungkinkan pengguna non-root menggunakan supervisorctl, tetapi sekarang siapa pun dapat memulai kembali proses orang lain. Dari tampilannya, pengawas tidak memiliki cara melakukan kontrol akses per pengguna.
Adakah yang punya ide tentang cara memungkinkan pengguna untuk memulai kembali hanya proses mereka sendiri tanpa root?
EDIT: Beberapa hal yang kami pikirkan termasuk menulis skrip yang dimiliki oleh root dengan set bit suid yang tidak berisi apa-apa selain supervisorctl restart myapp
dan meletakkannya di direktori pengguna yang memiliki myapp
. Internet sepertinya mengatakan bahwa skrip seperti itu tidak aman jika dilakukan secara salah. Kami juga mempertimbangkan untuk menulis daemon khusus yang mendengarkan perintah dari pengguna tertentu dan memulai kembali proses penyelia jika pengguna memiliki izin. Gagasan ini tampaknya terlalu rumit jika solusi yang lebih sederhana akan berhasil.
sumber
%sudo ALL=(ALL:ALL) ALL