मुझे dba
समूह में उपयोगकर्ताओं को database@
सेवाओं को नियंत्रित करने की अनुमति देने की आवश्यकता है । इस संबंधित प्रश्न का उत्तर केवल उन सभी systemctl
"क्रियाओं" को सूचीबद्ध करना है जिन्हें मैं sudoers
फ़ाइल में अनुमति देना चाहता हूं , हालांकि, यह मेरे मामले पर लागू नहीं होता है क्योंकि मुझे पहले से नहीं पता है कि सिस्टम में क्या डेटाबेस मौजूद हो सकता है। उदाहरण के लिए, अगर मैं सूची देता हूं
%dba = /usr/bin/systemctl start database@awsesomeapp
%dba = /usr/bin/systemctl start database@anotherawsesomeapp
%dba = /usr/bin/systemctl start database@yetanotherawsesomeapp
%dba = /usr/bin/systemctl start database@wowyetanotherawsesomeapp
# ... other "verbs" omitted for brevity
भविष्य में मौजूद ऐसे उदाहरणों को शामिल नहीं किया जा सकता है, और एक dba नहीं कर पाएंगे
$ sudo systemctl start database@omgwowyetanotherawsesomeapp
वैसे भी, मैं एक विशिष्ट प्रणाली के साथ की तुलना में पैकेजिंग के मामले में अधिक सोच रहा हूं।
ध्यान दें कि, जैसा कि किसी अन्य संबंधित प्रश्न के लिए इस अद्भुत उत्तर में दिखाया गया है , इसके लिए sudo ग्लब्स का उपयोग करना अंततः असुरक्षित है:
%dba ALL = /usr/bin/systemctl start database@[a-z]* # UNSAFE!
अनुमति देता है
$ sudo systemctl start database@awsesomeapp unrelatedservice
मुझे संदेह sudo
है कि मेरी समस्या का समाधान नहीं हो रहा है (हालांकि मुझे यकीन है कि मुझे उम्मीद है कि मैं गलत हूं)। क्या गैर-रूट उपयोगकर्ताओं को systemd
सेवाओं को नियंत्रित करने की अनुमति देने का कोई अन्य तरीका है ?
इसके लायक होने के लिए, मुझे भविष्य में एक CentOS 7 सिस्टम और RHEL7 सिस्टम में यह करने की आवश्यकता है। मुझे आर्क लिनक्स पर काम करने वाले समाधानों में भी दिलचस्पी होगी।