लिनक्स टर्मिनल में रूट सत्र प्राप्त करने के कई अलग-अलग तरीके हैं। यह कुछ भ्रम पैदा कर सकता है, क्योंकि अधिकांश शुरुआती उपयोगकर्ता जो रूट विशेषाधिकार प्राप्त करना चाहते हैं, वे इस बात से परिचित नहीं हो सकते हैं कि प्रत्येक कमांड रूट एक्सेस कैसे प्राप्त कर सकता है, वे कैसे भिन्न हैं और ये अंतर कब मायने रखते हैं। यहां हम टर्मिनल में रूट एक्सेस प्राप्त करने के लिए उपयोग की जाने वाली कई अलग-अलग कमांडों में से प्रत्येक को अलग करते हैं, समझाते हैं कि वे रूट कैसे प्राप्त करते हैं, उनका उपयोग कब करते हैं, और बीच में सब कुछ।
सु
su
कमांड वर्तमान उपयोगकर्ता को प्रतिस्थापित करता है जो सिस्टम शेल में उपयोग कर रहा है।
आप su
. लिखकर किसी भी उपयोगकर्ता के लिए स्विच कर सकते हैं और उसके बाद एक उपयोगकर्ता नाम जोड़ना। यह सिस्टम को वर्तमान उपयोगकर्ता को निर्दिष्ट उपयोगकर्ता पर स्विच (और अनिवार्य रूप से लॉग आउट) करने के लिए कहेगा। वैकल्पिक रूप से, su
कमांड su
. दर्ज करके रूट एक्सेस हासिल कर सकता है आदेश के बाद कुछ भी निर्दिष्ट किए बिना।
"सु" का सबसे अच्छा उपयोग तब किया जाता है जब कोई उपयोगकर्ता सिस्टम पर रूट खाते तक सीधी पहुंच चाहता है। यह sudo
. से नहीं गुजरता है या ऐसा कुछ भी। इसके बजाय, आपको रूट उपयोगकर्ता का पासवर्ड दर्ज करने के लिए कहा गया है क्योंकि आप सचमुच इसमें लॉग इन कर रहे हैं। इसके अलावा, रूट एक्सेस प्राप्त करने के अन्य तरीकों से रूट होम डायरेक्टरी और रूट वातावरण तक पहुंच प्राप्त करने का लाभ नहीं मिलता है।
सुडो सु
यह कमांड रूट के बजाय वर्तमान उपयोगकर्ता का पासवर्ड मांगता है।
यह अनिवार्य रूप से su
running चलाने जैसा ही है खोल में, एक महत्वपूर्ण अंतर के लिए बचाओ। सिस्टम को सीधे "उपयोगकर्ताओं को स्विच" करने के लिए कहने के बजाय, आप इसे "सु" कमांड को रूट के रूप में चलाने के लिए कह रहे हैं। जब sudo su
चलाया जाता है, ".profile," ".bashrc" और "/etc/profile" प्रारंभ किया जाएगा, जैसे su
चलाना (या su root
) अगर कोई कमांड sudo
. के साथ चलाया जाता है इसके सामने, इसे रूट विशेषाधिकार दिए जाते हैं।
हालांकि "sudo su" और "su," sudo su
के बीच कोई बड़ा अंतर नहीं है। एक महत्वपूर्ण कारण के लिए अभी भी एक बहुत ही उपयोगी कमांड है:जब कोई उपयोगकर्ता सिस्टम पर रूट एक्सेस प्राप्त करने के लिए "su" चला रहा होता है, तो उन्हें रूट पासवर्ड पता होना चाहिए। रूट sudo su
. के साथ दिया गया है वर्तमान उपयोगकर्ता के पासवर्ड का अनुरोध करके। यह रूट पासवर्ड के बिना रूट हासिल करना संभव बनाता है जो सुरक्षा बढ़ाता है।
सुडो-आई
sudo -i
. का उपयोग करना वस्तुतः sudo su
. जैसा ही है एक अपवाद के साथ कमांड:यह सीधे रूट यूजर के साथ इंटरैक्ट नहीं करता है।
बहुत कुछ sudo su
. की तरह , -i
ध्वज उपयोगकर्ता को रूट खाता पासवर्ड जाने बिना रूट वातावरण प्राप्त करने की अनुमति देता है। sudo -i
sudo su
. का उपयोग करने के समान ही है , क्योंकि यह सभी पर्यावरण फाइलों (.प्रोफाइल, आदि) को पढ़ेगा और शेल के अंदर के वातावरण को सेट करेगा।
जहां यह "सुडो सु" से अलग है वह यह है कि sudo -i
रूट उपयोगकर्ता के साथ सीधे बातचीत किए बिना रूट और रूट वातावरण प्राप्त करने का एक बहुत साफ तरीका है। स्पष्ट करने के लिए:sudo su
. के साथ आप एक से अधिक रूट का उपयोग कर रहे हैं setuid
पृष्ठभूमि में आदेश। इससे यह पता लगाना अधिक चुनौतीपूर्ण हो जाता है कि कौन से पर्यावरणीय चर रखे जाएंगे और कौन से परिवर्तित किए जाएंगे (जब मूल पर्यावरण में बदल रहे हों)। sudo -i
. के साथ यह सच नहीं है . इस वजह से, ज्यादातर लोग इसे सीधे लॉग इन किए बिना रूट हासिल करने के पसंदीदा तरीके के रूप में देखते हैं।
सुडो-एस
यह आदेश आपके $SHELL चर के साथ एक शेल को बुलाता है।
-s
"सुडो" कमांड के लिए स्विच वर्तमान उपयोगकर्ता निष्पादन कमांड के $SHELL चर को पढ़ता है। यह कमांड ऐसे काम करता है जैसे यूजर sudo /bin/bash
चला रहा हो . Sudo -s
एक "गैर-लॉगिन" शैली खोल है। sudo -i
. जैसे कमांड के विपरीत या sudo su
, सिस्टम किसी भी पर्यावरणीय फाइल को नहीं पढ़ेगा। जब कोई उपयोगकर्ता शेल को sudo -s
run चलाने के लिए कहता है , यह जड़ प्राप्त करता है लेकिन उपयोगकर्ता या उपयोगकर्ता वातावरण को नहीं बदलेगा। आपका घर मूल घर आदि नहीं होगा।
इस कमांड का सबसे अच्छा उपयोग तब किया जाता है जब उपयोगकर्ता रूट पर स्विच नहीं करना चाहता है, लेकिन इसके $SHELL पर्यावरण मूल्य के साथ एक इंटरैक्टिव शेल चाहता है। अन्य कमांड ने उपरोक्त के बारे में बात की, रूट एक्सेस प्राप्त करें लेकिन रूट पर्यावरण फ़ाइलों को स्पर्श करें और उपयोगकर्ताओं को रूट तक पूर्ण पहुंच की अनुमति दें (जो एक सुरक्षा समस्या हो सकती है)।
अक्सर पूछे जाने वाले प्रश्न
<एच3>1. मुझे किस कमांड का उपयोग करना चाहिए?
प्रत्येक कमांड का अपना उपयोग-मामला होता है। यहां महत्वपूर्ण बात यह समझना है कि प्रत्येक आदेश क्या करता है और उनका उपयोग कब करना है। जैसा कि यह खड़ा है, sudo -i
जड़ वातावरण प्राप्त करने का सबसे व्यावहारिक, स्वच्छ तरीका है। दूसरी ओर, sudo -s
. का उपयोग करने वाले वे पाएंगे कि वे मूल वातावरण को छूने की क्षमता के बिना एक रूट शेल प्राप्त कर सकते हैं, कुछ ऐसा जिसने सुरक्षा लाभ जोड़ा है।
कुछ मामलों में, हाँ। जब तक आप पूरी तरह से सुनिश्चित न हों कि आपको किसी विशेष टर्मिनल सत्र में सब कुछ के लिए रूट तक पहुंचने की आवश्यकता है, तो अक्सर sudo
टाइप करना बेहतर होता है। एक कमांड के बाद यदि आप उस विशेष कमांड के लिए रूट एक्सेस करना चाहते हैं। उदाहरण के लिए, sudo apt install vlc
. टाइप करना लिनक्स के किसी भी डेबियन-आधारित संस्करण में ऑपरेटिंग सिस्टम को रूट को एक्सेस करने के लिए केवल VLC स्थापित करने के लिए APT पैकेज मैनेजर चलाने के लिए कहा जाएगा।
sudo -i
running चलाने के लिए एक बहुत ही महत्वपूर्ण चेतावनी या किसी अन्य प्रकार के बारे में जिसकी हमने पहले चर्चा की थी sudo
. टाइप करने के बजाय प्रत्येक कमांड से पहले जिसे आप रूट के रूप में चलाना चाहते हैं, वह यह है कि पूर्व आपके कमांड इतिहास को /var/log/auth.log
में लॉग नहीं करता है। . यदि आप गड़बड़ करते हैं, तो आप वापस नहीं जा सकते हैं और जांच सकते हैं कि आपने क्या किया ताकि आप इसे ठीक कर सकें। आपको मेमोरी से बाहर काम करना होगा, क्योंकि रूट सत्र रिकॉर्ड नहीं किए जाते हैं।
sudo
. लिखकर एक कमांड को निष्पादित करने के लिए (यानी, आप इसे उसी लाइन में टाइप कर रहे हैं जिस कमांड को आप चलाना चाहते हैं), आप अनिवार्य रूप से इसे एक इंटरेक्टिव रूट शेल के तहत चला रहे हैं। यह वही होगा जो sudo -s
स्टैंडअलोन कमांड करता है।
रैपिंग अप
इस सूची में वास्तव में एक भी ऐसा आदेश नहीं है जो 100% सर्वश्रेष्ठ हो। जैसे-जैसे उपयोगकर्ता कमांड लाइन के साथ अधिक सहज होते जाते हैं, उन्हें रूट हासिल करने के हर तरीके (और कई हैं) को ध्यान में रखना होगा और पेशेवरों और विपक्षों का वजन करना होगा और तदनुसार कार्य करना होगा। मुझे उम्मीद है कि इस लेख की मदद से ये निर्णय लेने में आसानी होगी। यदि आप कमांड के बारे में अधिक जानना चाहते हैं, तो निर्देशिका की सामग्री को सूचीबद्ध करने के लिए उपयोगी लिनक्स कमांड पर इस लेख को पढ़ें।