उत्तर के दो भाग हैं: !!
औरsudo
!!
शेल की कार्यक्षमता का एक हिस्सा है (उबंटू के मामले में यह संभवतः बैश है, लेकिन अन्य गोले जैसे zsh या csh इसे भी सपोर्ट करते हैं) को "इतिहास विस्तार" कहा जाता है। यह उसी तरह से व्यवहार करता है जैसे अन्य विस्तार में कि खोल 'प्लेसहोल्डर' को शब्दों के एक समूह तक फैलाता है। जबकि foo*
'फू' से शुरू होने वाली सभी फ़ाइलों की सूची में !!
विस्तारित किया जाएगा, पिछली कमांड लाइन की सामग्री तक विस्तारित हो जाता है।
$ echo foobar
foobar
$ echo !!
echo foobar
$ !!
echo foobar
अन्य विस्तार की तरह, यह पूरी तरह से शेल द्वारा किया जाता है, इसलिए यदि आप !!
किसी अन्य कमांड के बाद टाइप करते हैं, तो यह कमांड पता नहीं है कि वहाँ था !!
, लेकिन केवल पिछले कमांड लाइन को देखेंगे। (अन्य विस्तार के विपरीत, इतिहास का विस्तार इतिहास में एक कमांड को सहेजे जाने से पहले होता है, इसके बजाय !!
प्रतिस्थापित कमांड लाइन को इतिहास में सहेजा जाएगा।)
sudo
आदेश किसी अन्य उपयोगकर्ता के रूप में आदेशों को क्रियान्वित करने की अनुमति देता है, अनुमतियाँ (डिफ़ॉल्ट में कॉन्फ़िगर किया गया है सुरक्षा नीति द्वारा दी गिरफ्तारी प्रदान की /etc/sudoers
)।
डिफ़ॉल्ट रूप से रूट पासवर्ड उबंटू में परेशान रहता है। सिस्टम प्रशासन कार्यों को करने के लिए स्थापना के दौरान बनाए गए उपयोगकर्ता को sudo अधिकार दिए गए हैं। यह उपयोगकर्ता अब खोल पर किसी भी कमांड को रूट के रूप में निष्पादित कर सकता है, बस प्रीपेड करके sudo
। कुछ GUI प्रोग्राम sudo तंत्र का उपयोग करते हैं, उदाहरण के लिए पैकेज प्रबंधन।
sudo
अन्य कमांड को रूट (या किसी अन्य उपयोगकर्ता) के रूप में निष्पादित करने का कारण यह हो सकता है कि सुडो बाइनरी ( /usr/bin/sudo
) में इसकी अनुमति में सेट बिट बिट है और रूट से संबंधित है। कोई भी (बाइनरी) सेट सेतु बिट के साथ निष्पादन योग्य है जो उसके मालिक की अनुमति से चलाया जाता है। इसका मतलब यह है कि sudo रूट अनुमतियों के साथ प्रभावी रूप से चलता है, कोई फर्क नहीं पड़ता कि उपयोगकर्ता वास्तव में इसे कहते हैं। केवल वह सूडो की आंतरिक सुरक्षा नीतियों का प्रबंधन करता है कि किस उपयोगकर्ता को अनुमति दी जाती है और उपयोगकर्ता को मनमानी चीजें करने से रोकें।
तो, sudo !!
इस साधन के मामले में
$ mount /dev/sdb1 /mnt
mount: only root can do that
$ sudo !!
मूल रूप से समान है
$ mount /dev/sdb1 /mnt
mount: only root can do that
$ sudo mount /dev/sdb1 /mnt
बस कम टाइपिंग। दोनों ही मामलों में sudo बस देखता है mount /dev/sdb1 /mnt
और इसे रूट अनुमतियों के साथ चलाता है।