क्या केवल किसी विशेष कमांड को सुडो एक्सेस देना संभव है?


24

पृष्ठभूमि: मेरे पास LAMP सेटअप के साथ एक विकास मशीन है। कई डेवलपर्स समय-समय पर मशीन का उपयोग करेंगे। हर बार जब वे कॉन्फ़िगरेशन फ़ाइल में कुछ बदलाव करते हैं तो उन्हें अपाचे सर्वर का उपयोग करके sudo service apache restartया फिर से शुरू करने की आवश्यकता होगीsudo /etc/init.d/apache2 restart

प्रश्न:

अब मैं चाहता हूं कि प्रत्येक डेवलपर जो मशीन तक पहुंचता है, उसके पास हर चीज के लिए एक सूडो एक्सेस नहीं है। बल्कि, उसे केवल serviceसूडो का उपयोग करके कमांड चलाने में सक्षम होना चाहिए और कुछ नहीं। क्या यह करना मुमकिन है?

जवाबों:


35

हाँ।

एक नया समूह बनाएं, वेब (इसे अपनी इच्छानुसार कॉल करें)

sudo addgroup web

अपने डेवलपर को वेब समूह में जोड़ें (उनके लॉगिन नाम का उपयोग करें)।

sudo adduser your_developer_user web

फिर चलाएं sudo visudo -f /etc/sudoers.d/somefile(इसके बजाय एक सार्थक नाम का उपयोग करें somefile)।

एक पंक्ति में जोड़ें (कमांड के पूर्ण पथ का उपयोग करें):

%web ALL=(ALL) /usr/bin/service apache2 *

तब डेवलपर्स चला सकते हैं

sudo service apache

उनके लॉगिन पासवर्ड का उपयोग कर।

अपने व्यवस्थापक उपयोगकर्ता को वेब समूह में न जोड़ें।

अतिरिक्त जानकारी के लिए मैन सूडर्स देखें


1
@Ankit: जिस तरह से webसमूह के उपयोगकर्ता किसी भी सेवा को शुरू / बंद कर सकते हैं, और यह वह नहीं है जो आप चाहते हैं, मुझे लगता है। समाधान सटीक कमांड (मापदंडों के साथ भी) में रखा जाना चाहिए /etc/sudoers
enzotib

@enzotib क्या मैं इसका मतलब यह कर सकता हूं कि नई कमांड /usr/bin/service apache2यह होगी?
अंकित 12

3
@Ankit:/usr/bin/service apache2 *
enzotib

यह भी संभवतः होना चाहिए/usr/sbin/service
इरफान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.