मेरे पास "su" का पासवर्ड क्यों नहीं है? "Sudo" के साथ समस्याएं


34

मैंने GUI का उपयोग करके उबंटू स्थापित किया है, अपने आप को एक पासवर्ड और सब कुछ दे रहा हूं। मुझे जटिल प्रक्रिया याद नहीं है। हालांकि, मुझे क्या चिंता है कि मुझे निम्नलिखित पासवर्ड नहीं पता है:

$ su
Password: <the only password I've ever created on this machine>
su: Authentication failure

मुझे अब भी नहीं पता कि करना क्या है। मैं परेशानी में नहीं हूं, लेकिन मैं जानना चाहता हूं कि यहां क्या हो रहा है। मैं खुद को निर्देशिकाओं से बाहर कर सकता हूं:

starkers@ubuntu:~/Desktop$ mkdir foobs
starkers@ubuntu:~/Desktop$ sudo chmod 777 -R foobs
sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700
[sudo] password for starkers: <the only password I've ever created on this machine> 
starkers@ubuntu:~/Desktop$ cd foobs
bash: cd: foobs: Permission denied

मैं थोड़ा उलझन में हूं। मैं अपने आप को इस तरह से कैसे बंद कर सकता हूं? मुझे लगता sudoहै कि यहाँ प्रमुख आदेश है। लेकिन मैं foobsफ़ाइल को उतनी ही खुली बना रहा हूं जितना संभवतः इसके माध्यम से हो सकता है chmod, इसलिए यह मुझे लॉक क्यों करता है?


6
आपको लगभग कभी नहीं करना चाहिए chmod -R 777 whatever, जब तक कि आप एक बड़ा सुरक्षा जोखिम पैदा नहीं करना चाहते।

1
@BroSlow शीर्ष के लिए धन्यवाद। इस प्रश्न के बाहर, लेकिन कोई एक निर्देशिका के लेखन विशेषाधिकार को सुरक्षित रूप से कैसे सेट करेगा? 666?
स्टार्क

1
निश्चित रूप से बेहतर है, लेकिन आप क्या करने की कोशिश कर रहे हैं पर निर्भर करता है। उदाहरण के लिए क्या आपको वास्तव में सभी उपयोगकर्ताओं के पास सब कुछ r / w का उपयोग करने की आवश्यकता है। यदि नहीं, तो आप 644 जैसा कुछ कर सकते हैं (केवल आपके अलावा सभी के लिए पढ़ें)। और सामान्य तौर पर, मैं पुनरावृत्ति करते समय बहुत सावधान रहूंगा chmodकि यह केवल आपके द्वारा इच्छित फ़ाइलों को बदल रहा है।

1
@broslow क्या आप उच्च हैं? 666 1) अभी भी विश्व-योग्य है और इसलिए सुरक्षा जोखिम का एक ही डिग्री है, और 2) निष्पादन योग्य बिट को हटा देता है, जिसका अर्थ है कि वह अब उस निर्देशिका में chdir नहीं कर पाएगा।
शादुर

@Starkers मैं यहाँ जो वास्तविक सुरक्षा मुद्दा देख रहा हूँ, वह यह है कि किसी पागल कारण /var/lib/sudoसे विश्व की योग्यता के लिए सेट किया गया है। यह नहीं होना चाहिए और आपको यह पता लगाने की कोशिश करनी चाहिए कि ऐसा क्यों हुआ।
शादुर

जवाबों:


49

डिफ़ॉल्ट रूप से, सुपरयुसर ( root) खाता अक्षम है और उसका कोई पासवर्ड नहीं है। आप चलाकर एक बना सकते हैं:

$ sudo passwd root

फिर आप suइस पासवर्ड का उपयोग करके रूट के रूप में लॉगिन कर पाएंगे ।

के रूप में chmod, सही आदेश होगा:

$ chmod 777 -R foobs

आप भी उपयोग कर सकते हैं:

$ sudo -i

अपने पासवर्ड का उपयोग कर रूट के रूप में लॉगिन करें (बिना रूट पासवर्ड बनाए जैसा कि ऊपर वर्णित है)।


4
@ शायद आप अपने प्रश्न को जोड़ने के लिए संपादित कर सकते हैं sudo su। यह टर्मिनल में स्थायी सु अधिकार भी देता है।
Wakeup

13
उपयोग न करें sudo su, क्योंकि यह पर्यावरण के साथ खराब हो जाएगा और चीजें टूट जाएंगी। इसके बजाय उपयोग करें sudo -i
स्ट्रूजी

20
रूट पासवर्ड सेट न करें। रूट पासवर्ड सेट करें ।
व्रचिन

4
chmod 777 लगभग हमेशा खराब होता है (चिपचिपा सा छूट जाता है; जैसा कि / tmp के साथ प्रयोग किया जाता है)। यह उत्तर सुरक्षा जोखिम है। इसके अलावा रूट पासवर्ड सेट करना उबंटू का उपयोग करने का तरीका नहीं है; फिर से एक सुरक्षा जोखिम को आमंत्रित करना। कृपया neon_overload के उत्तर का पालन करें।
रिनविंड

4
@Chargin आप रूट खाता / पासवर्ड नहीं होने का सुझाव क्यों देते हैं? मैं एक आर्च्लिनक्स उपयोगकर्ता के रूप में वास्तव में उत्सुक हूं।
रॉब

67

1. आपके पास रूट पासवर्ड क्यों नहीं है

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

पूर्ण "सूडो" अनुमति वाला कोई भी व्यक्ति " sudoकमांडर के रूप में" सुपर कमांडर के रूप में कुछ कर सकता है । उदाहरण के लिए, apt-get dist-upgradeएक सुपरयुसर के रूप में चलाने के लिए , आप इसका उपयोग कर सकते हैं:

sudo apt-get dist-upgrade

आप सूदो के इस उपयोग को वेब पर उबंटू के बारे में पढ़ते हुए कहीं भी देखेंगे। यह ऐसा करने का एक विकल्प है।

su
apt-get dist-upgrade
exit

Sudo के साथ, आप पहले से चुनते हैं कि किन उपयोगकर्ताओं के पास sudo पहुँच है। उन्हें रूट पासवर्ड याद रखने की कोई आवश्यकता नहीं है, क्योंकि वे अपने पासवर्ड का उपयोग करते हैं। यदि आपके पास एक से अधिक उपयोगकर्ता हैं, तो आप रूट पासवर्ड को बदलने की आवश्यकता के बिना किसी के सुपरसुअर एक्सेस को रद्द कर सकते हैं, बिना उसके पासवर्ड की अनुमति के। आप यह भी चुन सकते हैं कि उपयोगकर्ता को कौन-सी कमांड सूडो का उपयोग करने की अनुमति है और उस उपयोगकर्ता के लिए कौन से आदेश मना किए गए हैं। और अंत में, अगर कोई सुरक्षा भंग होता है तो कुछ मामलों में यह बेहतर ऑडिट ट्रेल को छोड़ सकता है जिसमें उपयोगकर्ता खाते से समझौता किया गया था।

सूदो सुपरसुसर विशेषाधिकारों के साथ एकल कमांड निष्पादित करना आसान बनाता है। इसके साथ su, आप स्थायी रूप से एक सुपरसुअर शेल पर जाते हैं जिसे उपयोग करके exitया बाहर निकलना चाहिए logout। यह सुपरयूज़र शेल में रहने वाले लोगों को आवश्यकता से अधिक समय तक सिर्फ इसलिए ले जा सकता है क्योंकि यह लॉग आउट करने और बाद में फिर से अधिक सुविधाजनक है।

सुडो के साथ, आपके पास अभी भी कमांड के साथ एक स्थायी (इंटरैक्टिव) सुपरसुअर शेल खोलने का विकल्प है:

sudo su

... और यह अभी भी बिना किसी रूट पासवर्ड के किया जा सकता है, क्योंकि कमांड sudoको सुपरयुसर विशेषाधिकार देता है su

और इसी तरह, su -एक लॉगिन शेल के बजाय आप इसका sudo su -या उसके शॉर्टकट का उपयोग कर सकते हैं sudo -i

हालाँकि ऐसा करते समय आपको बस इस बात की जानकारी होनी चाहिए कि आप हर कमांड के लिए एक सुपरयुसर के रूप में काम कर रहे हैं। यह एक अच्छा सुरक्षा सिद्धांत है कि आवश्यकता से अधिक समय तक सुपरयुजर के रूप में नहीं रहना है, बस गलती से सिस्टम को कुछ नुकसान पहुंचाने की संभावना को कम करना है (इसके बिना, आप केवल अपने उपयोगकर्ता के मालिक की फाइलों को नुकसान पहुंचा सकते हैं)।

बस स्पष्ट करने के लिए, आप कर सकते हैं , यदि आप चुनते हैं, तो रूट उपयोगकर्ता को @ ओली के उत्तर में वर्णित के रूप में लॉगिन के रूप में लॉगिन की अनुमति देता है, यदि आप विशेष रूप से इसके बजाय इस तरह से चीजें करना चाहते हैं। मैं आपको sudoइसके बजाय उबंटू सम्मेलन के उबंटू सम्मेलन के बारे में बताना चाहता हूं और आपको बता दूं कि एक विकल्प है।


2. अपने chmod 777 -R कमांड के साथ समस्याएं

आपके प्रश्न का दूसरा हिस्सा भी है: कमांड के साथ आपके मुद्दे sudo chmod 777 -R foobs

सबसे पहले, निम्नलिखित चेतावनी आपके मशीन पर संभावित गंभीर सुरक्षा समस्या को इंगित करती है:

sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700

इसका मतलब है कि किसी न किसी स्तर पर, आप /var/lib/sudoविश्व-लेखन के लिए तैयार हैं। मुझे लगता है कि आपने ऐसा कुछ चरण में किया है जैसे कि कमांड sudo chmod 777 -R /। दुर्भाग्य से, ऐसा करने से आप संभवतः अपने पूरे सिस्टम में सभी फ़ाइल अनुमतियों को तोड़ चुके हैं। यह संभावना नहीं है कि यह एकमात्र महत्वपूर्ण सिस्टम फ़ाइल होगी, जिसकी अनुमति विश्व-योग्य होने के लिए बदल दी गई है। अनिवार्य रूप से आपके पास अब आसानी से हैक करने योग्य प्रणाली है, और इसे वापस लाने का एकमात्र आसान तरीका फिर से स्थापित करना होगा।

दूसरी बात, आप जो कमांड इस्तेमाल कर रहे थे:

sudo chmod 777 -R foobs

जब आपके घर निर्देशिका के भीतर फ़ाइलों में हेरफेर करते हैं, तो इस मामले में ~/Desktop, आपको उपयोग नहीं करना चाहिए sudo। आपके द्वारा अपने घर निर्देशिका में बनाई गई सभी फाइलें वैसे भी आपके द्वारा संशोधित की जानी चाहिए (और यदि नहीं, तो कुछ अजीब चल रहा है)।

इसके अलावा, आपको फ़ाइल अनुमतियों को बदलने के परिणामों से पूरी तरह अवगत होना चाहिए, जैसे कि यह पुनरावृत्ति करना या भारी संख्या में फ़ाइलों पर। इस स्थिति में, आप विश्व-योग्य होने के लिए फ़ाइल अनुमतियों को सावधानीपूर्वक सेट कर रहे हैं। किसी भी अन्य उपयोगकर्ता, या मशीन पर किसी भी छोटी गाड़ी के सर्वर सॉफ़्टवेयर में इन सभी फ़ाइलों और निर्देशिकाओं को अधिलेखित करने की आसान पहुँच हो सकती है।

यह लगभग निश्चित है कि आप जिस भी समस्या को हल करने की कोशिश कर रहे हैं, उसके लिए chmod 777 -R [dir]यह उचित समाधान नहीं है (और जैसा कि मैंने ऊपर बताया है, इस बात के सबूत हैं कि आपने इसे सिस्टम फ़ाइलों / var / lib में भी किया है, और मैं बहुत से दूसरे को मानता हूं स्थान)।

अंगूठे के बुनियादी नियमों के एक जोड़े:

  • यदि आप अपने घर निर्देशिका, डेस्कटॉप आदि में अपनी खुद की फ़ाइलों के साथ गड़बड़ कर रहे हैं, तो आपको कभी भी उपयोग sudoया सुपरयूज़र अधिकारों की आवश्यकता नहीं होनी चाहिए । यदि आप करते हैं, तो यह एक चेतावनी संकेत है कि आप कुछ गलत कर रहे हैं।

  • आपको पैकेज के स्वामित्व वाली सिस्टम फ़ाइलों को मैन्युअल रूप से संशोधित नहीं करना चाहिए। अपवाद: जब तक आप इसे विशेष रूप से उन पैकेजों द्वारा प्रलेखित तरीके से नहीं कर रहे हैं, जैसे कि उनके कॉन्फ़िगरेशन को संशोधित करके /etc। यह फ़ाइल अनुमतियों को बदलने के लिए भी लागू होता है। यदि किसी ट्यूटोरियल या समस्या को ठीक करने के प्रयास के लिए sudoया सुपरयुसर अधिकारों की आवश्यकता होती है , और यह केवल / etc / में कॉन्फ़िगरेशन में बदलाव नहीं है, तो यह एक चेतावनी संकेत है कि आप कुछ गलत कर रहे हैं।


बहुत बढ़िया विवरण .. अंगूठे ऊपर .. :)
सौरव कुमार

7
मुझे लगता है कि "सूडो-आई" रूट शेल प्राप्त करने का "आधिकारिक" तरीका है, "सूडो सु" के बजाय
अधिकतम

3
हाँ, आप का उपयोग करना चाहिए sudo -iसे अधिक sudo su
सेठ

sudo -i(या sudo su -) सार्वभौमिक रूप से बेहतर नहीं हैं, लेकिन सिर्फ अलग हैं - ये एक लॉगिन शेल लॉन्च करते हैं जो रूट उपयोगकर्ता लॉगिन वातावरण का अनुकरण करता है, जो निष्पादित करता है, उदाहरण के लिए, रूट उपयोगकर्ता की .profileफ़ाइल या .loginफ़ाइल। ये बेहतर हैं यदि आप चाहते हैं कि शेल में वातावरण सुपर शेल के लिए इंटरएक्टिव शेल की तुलना में रूट लॉगिन शेल की तरह अधिक हो। शेल का उपयोग करने पर लॉगिन-आधारित गोले का उपयोग करना बेहतर होता है, लेकिन यह लूट है: जवाब का मुद्दा यह है कि उबंटू मुख्य रूप sudoसे सुपरसुसर विशेषाधिकारों के साथ कमांड चलाने के लिए उपयोग किया जाता है ।
थोमसट्रेटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.