यह गाइड बताएगी कि sudo कमांड क्या है, Linux में इसका उपयोग कैसे करें, और इसकी कॉन्फ़िगरेशन फ़ाइल को कैसे संपादित करें।
Ubuntu Linux उपयोगकर्ता Linux में "sudo" कमांड का उपयोग करने से परिचित हो सकते हैं। यह Linux में एक बहुत उपयोगी विशेषता है जो Linux मशीन के प्रशासक को किसी विशेष यूज़र या यूज़र के समूह को "रूट" विशेषाधिकार देने की अनुमति देती है। इसे इस तरह भी कॉन्फ़िगर किया जा सकता है कि यह विशेषाधिकार एक या अधिक कमांड तक सीमित हो। उदाहरण के लिए, Ubuntu टीम ने डिफ़ॉल्ट रूप से रूट यूज़र को लॉग इन करने से ब्लॉक करने का फैसला किया है और इसके बजाय उपयोगकर्ताओं को प्रशासनिक कार्य करने के लिए sudo का उपयोग करने की अनुमति दी है। इसलिए यदि आप Ubuntu Linux का उपयोग कर रहे हैं, तो sudo विशेषाधिकार सेटअप किए गए हैं ताकि आपके पास पूर्ण "रूट" विशेषाधिकार हों। आइए अपनी मशीन पर sudo विशेषाधिकार सेटअप और कॉन्फ़िगर करने पर करीब से नज़र डालें। आगे बढ़ने से पहले कृपया ध्यान दें कि आपको निम्नलिखित को प्रोडक्शन सर्वर पर आज़माना नहीं चाहिए। कृपया इस ट्यूटोरियल में उदाहरणों को टेस्ट मशीन पर आज़माएं और प्रोडक्शन सर्वर पर आज़माने से पहले sudo से परिचित हों। sudo एक बहुत शक्तिशाली टूल है और इसका अत्यधिक सावधानी से उपयोग किया जाना चाहिए।
मेरी जानकारी के अनुसार "sudo" पैकेज सभी Linux डिस्ट्रीब्यूशन के साथ आता है। इसलिए मैं इंस्टॉलेशन को छोड़ दूंगा और सीधे कॉन्फ़िगरेशन पर जाऊंगा। इस ट्यूटोरियल के लिए मैं Red Hat Linux मशीन का उपयोग करूंगा। अपने Linux मशीन में रूट के रूप में लॉग इन करें और कमांड लाइन पर निम्न कमांड चलाएं:
# visudo
उपरोक्त कमांड आपके मशीन पर डिफ़ॉल्ट एडिटर का उपयोग करके "sudo" कॉन्फ़िगरेशन, जो /etc/sudoers पर है, को खोलेगी, जो मेरे पर Vim है। उस सेक्शन तक स्क्रॉल डाउन करें जहां आप निम्न टेक्स्ट देखते हैं:
root ALL=(ALL) ALL
इस sudo कॉन्फ़िगरेशन सिंटैक्स का विवरण इस प्रकार है। आप पहले उस 'यूज़र' को परिभाषित करते हैं जिसके लिए आप sudo सेटअप करना चाहते हैं। फिर आता है 'होस्टनेम' जहां कमांड चलाने की अनुमति है। यह एक विशिष्ट होस्टनेम हो सकता है या ऊपर दिए उदाहरण में "ALL" की तरह। और अंत में वह 'कमांड' जिसके लिए आप 'यूज़र' को प्रशासनिक विशेषाधिकार देना चाहते हैं।
कॉन्फ़िगरेशन पर वापस। Vim में ऊपर दिखाई गई लाइन तक स्क्रॉल डाउन करें और अपने कीबोर्ड पर अक्षर o दबाकर एक नई लाइन जोड़ें। अब निम्न टेक्स्ट जोड़ें, calvin को अपने यूज़रनेम से बदलें:
calvin ALL=(ALL) ALL
निम्न कुंजी संयोजन का उपयोग करके फ़ाइल सेव करें और बाहर निकलें:
ESC :wq
Return (एंटर) कुंजी दबाकर इन निर्देशों को लागू करें। हमने अब यूज़र 'calvin' को sudo का उपयोग करके सभी प्रशासनिक विशेषाधिकार दे दिए हैं। एक नई टर्मिनल विंडो खोलें और उस यूज़र के रूप में लॉग इन करें जिसे आपने sudo विशेषाधिकार दिए हैं। आइए टेस्ट करें कि नई अनुमतियां सही ढंग से सेटअप की गई हैं या नहीं, यूज़र 'calvin' के रूप में Apache वेब सर्वर को रीस्टार्ट करके:
# sudo /etc/init.d/httpd restart
Password:
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
सिस्टम अब आपसे पासवर्ड के लिए प्रॉम्प्ट करेगा। अपने यूज़रनेम का पासवर्ड दर्ज करें। और वॉयला! Apache वेब सर्वर अब रीस्टार्ट हो जाना चाहिए। आप इसे किसी अन्य प्रशासनिक कार्य के लिए उपयोग कर सकते हैं। किसी यूज़र को पूर्ण विशेषाधिकार देना हमेशा सर्वोत्तम विचार नहीं हो सकता है। इसलिए आप यूज़र को कुछ कमांड के साथ प्रशासनिक विशेषाधिकारों तक सीमित कर सकते हैं। मान लें कि आप यूज़र 'calvin' को केवल Apache वेब सर्वर को रीस्टार्ट करने की अनुमति देना चाहते हैं। visudo कमांड का उपयोग करके sudo कॉन्फ़िगरेशन फ़ाइल खोलें और आपके द्वारा पहले दर्ज की गई लाइन को इस तरह संपादित करें:
calvin ALL=(ALL) /etc/init.d/httpd restart
फ़ाइल सेव करें और बाहर निकलें। यूज़र 'calvin' के रूप में टर्मिनल में लॉग इन करें। अब sudo के साथ Apache को रीस्टार्ट करने का प्रयास करें:
# sudo /etc/init.d/httpd restart
Password:
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
बढ़िया। यह काम करता है। अब वेब सर्वर को रोकने का प्रयास करें:
# sudo /etc/init.d/httpd stop
Password:
Sorry, user calvin is not allowed to execute '/etc/init.d/httpd stop' as root on commons.
तो जैसा कि आप देख सकते हैं, यूज़र 'calvin' केवल वही कर सकता है जो हम उसे करने की अनुमति देते हैं, और कुछ नहीं। आप sudoers फ़ाइल में कई कमांड कॉमा से अलग करके जोड़ सकते हैं। इसलिए यदि आप 'calvin' को वेब सर्वर को रोकने और रीस्टार्ट करने की अनुमति देना चाहते हैं तो आपका कॉन्फ़िगरेशन इस तरह पढ़ेगा:
calvin ALL=(ALL) /etc/init.d/httpd restart,/etc/init.d/httpd stop
अब वेब सर्वर को रोकने का प्रयास करें, और यह काम करना चाहिए:
# sudo /etc/init.d/httpd stop
Password:
Stopping httpd: [ OK ]
Sudo की एक और विशेषता जो काफी उपयोगी है, विशेष रूप से यदि आपको शेल स्क्रिप्ट का उपयोग करके प्रशासनिक कार्य करने की आवश्यकता है, वह है पासवर्ड के लिए प्रॉम्प्ट किए बिना sudo विशेषाधिकार सेट करना। याद रखें कि प्रोडक्शन मशीन पर साझा किए गए यूज़रनेम का उपयोग करके ऐसा करना उचित नहीं हो सकता है, क्योंकि यदि आपके यूज़रनेम का पासवर्ड गलत हाथों में पड़ जाता है तो यह मुसीबत खड़ी कर सकता है। इसलिए इस सुविधा का उपयोग सावधानी से करें।
sudoers फ़ाइल खोलें और आपके द्वारा पहले दर्ज की गई लाइन को इस तरह संपादित करें:
calvin ALL=(ALL) /etc/init.d/httpd restart NOPASSWD: ALL
कॉन्फ़िगरेशन का अंतिम भाग sudo को पासवर्ड के लिए प्रॉम्प्ट न करने या अपेक्षा न करने का निर्देश देता है, और यूज़र को उसे सौंपी गई कमांड को प्रशासनिक विशेषाधिकारों के साथ निष्पादित करने की अनुमति देता है। फ़ाइल सेव करें और अपने टेक्स्ट एडिटर से बाहर निकलें और Apache को रीस्टार्ट करने का प्रयास करें:
# sudo /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
sudo कॉन्फ़िगरेशन फ़ाइल में बहुत अधिक कस्टमाइज़ेशन किया जा सकता है। हमने अभी इसके एक छोटे से हिस्से को देखा है। हालांकि, यह आपको शुरुआत देने के लिए पर्याप्त होना चाहिए। फिर से, कृपया इसे सावधानी से उपयोग करें।