मैं रूट के रूप में एक निर्देशिका में सीडी कैसे कर सकता हूं?


10

मान लीजिए कि एक निर्देशिका है जिसका मेरे पास उपयोग करने के लिए विशेषाधिकार नहीं है। जाहिर है sudo cd fooकाम नहीं करेगा, क्योंकि cdहर शेल में एक शेल बिलिन है।

अब तक, मैं बस उपयोग कर sudo bashरहा हूं (हाँ मुझे पता है कि बेहतर तरीके हैं) रूट प्रॉम्प्ट प्राप्त करने के लिए। फिर, मैं cdचारों ओर प्रहार करने के लिए निर्देशिका में हो सकता हूं ।

क्या ऐसा करने के लिए इससे अच्छा तरीका है?


आप cdमूल के रूप में क्यों होना चाहते हैं (जब तक कि आप वास्तव में रूट शेल में नहीं हैं)?
ट्रिपल

यदि कोई निर्देशिका रूट के स्वामित्व में थी और कोई वैश्विक निष्पादन नहीं था
स्ट्रगलर

1
यह वास्तव में एक वैध मामला नहीं है। निर्देशिका को पढ़ने में सक्षम होना उपयोगी हो सकता है, लेकिन इसके लिए निर्देशिका को आपके कार्यशील निर्देशिका की आवश्यकता नहीं है, अर्थात आपको इसकी आवश्यकता नहीं है cd
ट्रिपल जू

हाँ, मुझे यह महसूस नहीं हुआ कि जब तक कि स्वीकृत जवाब यह नहीं बताता कि मैं बस कर सकता हूं sudo ls
स्ट्रगलर

जवाबों:


12

नहीं, cdनिर्देशिका के लिए एक रास्ता नहीं है जो केवल रूट को रूट किए बिना अनुमति देता है। वास्तव में बहुत सी निर्देशिकाएं नहीं होनी चाहिए जिनके पास यह सीमा है। अधिकांश समय यह किसी दिए गए फ़ाइल तक पहुंच है, जो /etc/shadowफ़ाइल या विशिष्ट लॉग फ़ाइल के रूप में सीमित है /var/log

आप sudo ls <dir>उन्हें देखने के बजाय उपयोग कर सकते हैं bash। इसके अलावा जब sudoआप रूट बनने के लिए आम तौर पर उपयोगकर्ता ( suकमांड) को इसके बजाय सेट करना चाहते हैं bash, तो इसके बजाय इस कमांड का उपयोग करें:

$ sudo su -

आप सूडो के -iस्विच के साथ भी यही काम कर सकते हैं :

$ sudo -i

के बारे में आदमी पृष्ठ से अंश sudo -i

-I (आरंभिक लॉगिन का अनुकरण) विकल्प, लक्ष्य उपयोगकर्ता के पासवार्ड (5) प्रविष्टि में निर्दिष्ट शेल को एक शेल खोल के रूप में चलाता है। इसका मतलब यह है कि लॉगिन-विशिष्ट संसाधन फाइलें जैसे कि .profile या .login शेल द्वारा पढ़ी जाएंगी। यदि कोई कमांड निर्दिष्ट है, तो इसे निष्पादन के लिए शेल में पास किया जाता है। अन्यथा, एक इंटरैक्टिव शेल निष्पादित किया जाता है।

उन फ़ाइलों के लिए जिन्हें आप एक्सेस नहीं कर सकते हैं, आप इनमें से किसी भी sudoकमांड का उपयोग कर सकते हैं :

$ sudo tail /var/log/messages

$ sudo less /etc/shadow

3
sudo su -इसके बजाय आप क्यों इस्तेमाल करेंगे sudo -i? वे दोनों आपको सभी सुपरयूजर विशेषाधिकार प्रदान करते हैं, हालांकि आपको सभी की जरूरत है CAP_DAC_READ_SEARCH क्षमता।
स्टीफन चेज़लस

@StephaneChazelas - मैंने पहले कभी उस स्विच पर ध्यान नहीं दिया। मेरा मूल परिचय sudoसोलारिस वातावरण के माध्यम से था और वहां के संस्करण sudoमें यह स्विच शामिल नहीं था। सूडो चैंज के माध्यम से देखने पर ऐसा लगता है कि यह विकल्प 2004 में जोड़ा गया था। लगता है कि मैं इसके साथ खुद को डेट कर रहा हूं लेकिन आपने 8-) से पूछा। मैं दोनों को शामिल करने के लिए उत्तर में संशोधन करूंगा, धन्यवाद!
स्लम

@ स्टीफनचैलेजस मैं सहमत हूं। मैं पसंद करता हूं sudo -Hiक्योंकि यह होम निर्देशिका को भी सेट करता है (यह मेरे डिस्ट्रो पर डिफ़ॉल्ट रूप से घर सेट नहीं करता है, डिफ़ॉल्ट अलग-अलग हो सकता है)। यदि आप नहीं करते हैं, तो आप अपने घर में जड़ स्वामित्व वाली फाइलों के साथ समाप्त हो सकते हैं, अगर यह वहां नई फाइलें बनाता है।
doug65536

5

नहीं, वहाँ नहीं है। आपको रूट के रूप में चलने वाला शेल चाहिए।


और, जैसा कि टिप्पणियों में बताया गया है, cdजब तक आप एक शेल या एक तुलनीय प्रक्रिया नहीं चला रहे हैं, तब तक यह काफी व्यर्थ है ।
ट्रिपल जू

0

ठीक है, तुम नहीं कर सकते। यहाँ एक समाधान है, हालांकि:

sudo sh -c "cd restricted-dir; some_command"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.