"सुडो-आई" और "सूडो बैश-एल" में क्या अंतर है


13

रूट के रूप में काम कर रहे कई sysadmins के संबंध में हाल ही में एक प्रश्न है , और sudo bash -lसंदर्भित किया गया था।

मैंने इसके लिए google और SE पर खोज की, लेकिन मुझे इसके sudo bash -lऔर अंतर के बारे में समझ नहीं है sudo -i

बैश और sudo bash -lसुडो के लिए मैन पेजों से ऐसा लगता है कि यह अंतर हो सकता है कि ~ / .bash_profile, ~ / .bash_login, और ~ / .profile, और ~ / .bash_logout रूट उपयोगकर्ता के लिए चलता है, लेकिन खुद को परखने से ऐसा लगता है। यह सामान्य उपयोगकर्ता को चलाता है .bashrc और रूट एक नहीं है। मुझे गलतफहमी हो सकती है कि कौन से उपयोगकर्ता ~ अभिव्यक्ति आदमी पन्नों में संदर्भित कर रहे हैं। अंतर और उपयोग परिदृश्यों के स्पष्टीकरण की सराहना की जाएगी।

जवाबों:


10

वे इसमें भिन्न हैं कि यदि / etc / passwd में निर्दिष्ट रूट उपयोगकर्ता लॉगिन शेल बैश नहीं है, तो दूसरी कमांड आपको रूट के रूप में एक bash शेल मिलेगी जबकि पहला कमांड रूट यूजर के पास जो भी इंटरैक्टिव शेल होगा उसका उपयोग करेगा।


हाय @ johnshen64, क्या आप विभिन्न उपयोग परिदृश्यों को स्पष्ट कर पाएंगे?
Rqomey

2
लोग जिस शेल का उपयोग कर रहे हैं उसे पसंद करते हैं, इसलिए यदि आप बैश का उपयोग करना चाहते हैं, तो दूसरे फॉर्म का उपयोग करना चाहिए। दूसरा रूप भी एक वास्तविक लॉगिन का अनुकरण करता है (जो कि -l का अर्थ है)। बेशक, आप बस बैश टाइप कर सकते हैं जब आप पाते हैं कि उपयोगकर्ता (रूट में डिफॉल्ट) को sudo -i का उपयोग करने में इंटरैक्टिव शेल के रूप में bash नहीं है। अन्यथा अंतर बहुत मामूली है। जैसा कि अन्य उत्तर से पता चलता है, पर्यावरण के कुछ अंतर भी हैं। ज्यादातर मामलों में अंतर मायने नहीं रखता है और पहले वाला कम है, क्योंकि अधिकांश आम डिस्ट्रो बैश का उपयोग करते हैं। मैं शायद ही कभी 2 फार्म का उपयोग करता हूं।
johnshen64

4

इसके अलावा @ johnshen64 उत्तर में जोड़ने के लिए मैंने देखा कि sudo -iमंगलाचरण उपयोगकर्ता $USERNAMEचर को अद्यतन करता है rootऔर cd ~उपयोगकर्ता के घर में भी;

$ sudo -i
[root@workstation001 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@workstation001 ~]# echo $USERNAME
root
[root@workstation001 userXXX]# echo $PWD
/root

हालाँकि, sudo bash -l $USERNAMEयह अनमोल है, और वर्किंग डायरेक्टरी नहीं बदली गई है। (हालांकि यह अन्य उपयोगकर्ताओं के अनुरूप नहीं है, टिप्पणियां देखें ...)

$ sudo bash -l
[root@workstation001 userXXX]# id
uid=0(root) gid=0(root) groups=0(root)
[root@workstation001 userXXX]# echo $USERNAME
userXXX
[root@workstation001 userXXX]# echo $PWD
/home/userXXX

तो संभवतः आप ~/.bashrcएक ही क्रम में समान सेट नहीं कर रहे हैं , या नहीं।

(मेरे बॉक्स को मेरे .bashrcटिंकरिंग ने थोड़ा गड़बड़ कर दिया होगा , इसलिए YMMV)


धन्यवाद @Tom H: echo $USERNAMEमेरे लिए (मेरे ubuntu डेस्कटॉप और सेंटोस 5.2 पर) दोनों बार रूट देता है। पीडब्ल्यूडी हालांकि आप की रिपोर्ट है।
रिकॉमी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.