"Chmod -R 777 / usr / bin" के बाद sudo को कैसे ठीक करें?


15

मैंने प्रवेश किया chmod -R 777 /usr/binऔर अब सूडो काम नहीं कर रहा है।

यह कहता है sudo must be setuid root

कुछ सलाह ऑनलाइन चलाने के लिए कहा chown root:root /usr/bin/sudo chmod 4755 /usr/bin/sudo

chown root:root /usr/bin/sudoइसे दर्ज करने पर एक opened in readonly modeत्रुटि दिखाई देती है।


1
उन कमांड को चलाने के लिए आपको रूट होना चाहिए

मनोज कुमार: क्या मेरा उत्तर में विधि (जो आप स्वीकार किए जाते हैं के रूप में चिह्नित किया है) आप के लिए इस समस्या को हल? मुझे विश्वास हो गया है कि, जैसा कि डेमियन रोशे और ओली ने टिप्पणी की है, यह विधि वास्तव में एक कमांड के सफलतापूर्वक पूरा होने के बाद काम नहीं करती है जैसे , काम करने के लिए जड़ को सेट करना पड़ता है। (मुझे यकीन नहीं है कि, क्योंकि यह पोलकिट सेवा का उपयोग करता है , लेकिन यह करता है।) हालांकि, मुझे लगता है कि मैंने अन्य लोगों को यह कहते सुना है कि यह उनके लिए काम कर रहा है, जो उत्सुक है! क्या आपने chmod कमांड समाप्त होने से पहले Ctrl + C दबाया था ? pkexecsudo chmod -R 777 /usr/binsudopkexec777
एलियाह कगन

नमस्कार। इस विधि ने वास्तव में मेरे लिए काम किया है जब मैंने गलती से सफलतापूर्वक भाग लिया था sudo chmod -R 777 /usr/bin, लेकिन केवल rootखाते में प्रवेश करने के बाद ।
हॉवेल

जवाबों:


10

स्वीकृत स्थिति के बावजूद, मैं अब आश्वस्त हूं कि यह उत्तर गलत है । (मुझे उम्मीद है कि स्वीकार के बारे में ओपी से परामर्श करने के बाद जल्द ही इसमें सुधार होगा।) मुझे लगता है कि मैं दूसरों को यह कहते हुए याद करता हूं कि यह काम किया है, लेकिन मेरा मानना ​​है कि उनकी समस्याएं कम से कम थोड़ी भिन्न थीं। यहाँ वर्णित विधि कुछ स्थितियों के लिए मूल्यवान रहती है जहाँ + या अन्य के chmod -R 777 /usr/binसाथ बाधित होती है या पूरी नहीं होती है। लेकिन एक बार ऐसा होने के बाद, यह अन-सेट्युइड भी होता है और यह किसी भी तरह से बेहतर काम नहीं करेगा , जैसा कि डेमियन रोशे और ओली ने सही टिप्पणी की है।CtrlCpkexecsudo

उबंटू डेस्कटॉप सिस्टम पर, पॉलिसीकीट स्थापित है, इसलिए pkexecइसका उपयोग टूटी हुई sudoनिष्पादन योग्य या sudoersफ़ाइल को ठीक करने के लिए किया जा सकता है । आपको पुनर्प्राप्ति मोड में बूट करने की आवश्यकता नहीं है और आपको लाइव सीडी से बूट करने की आवश्यकता नहीं है। आपको रिबूट करने की भी आवश्यकता नहीं है।

इस स्थिति में, निम्न आदेश चलाएँ:

pkexec chown root:root /usr/bin/sudo
pkexec chmod 4755 /usr/bin/sudo

अधिक जानकारी के लिए यह प्रश्न देखें ।


9
pkexec must be setuid root! कितना बुरा सपना!
डेमियन रोश

1
जैसा कि डेमियन बताते हैं, इस दृष्टिकोण के साथ समस्या pkexecबिल्कुल वैसी ही है जैसा कि भविष्य में है sudo। यह सामान्य रूप से अस्त-व्यस्त है और अंदर रहता है /usr/bin। मैंने इसका परीक्षण किया है और यह अभी काम नहीं करता है chmod -R 777 /usr/bin
ओली

@DamienRoche, Oli: मैं इस तरह से जल्द ही ठीक नहीं करने के लिए माफी चाहता हूँ ! तुम दोनों सही हो। मैं अनिश्चित हूं कि pkexecकाम करने के लिए रूट सेटिड क्यों होना पड़ता है (क्या यह अन्य गैर-सेट्यूइड प्रक्रियाओं की तरह पोलकिट डेमन के माध्यम से काम नहीं करता है?), लेकिन इसकी आवश्यकता है मैंने यह देखने के लिए प्रश्न पर टिप्पणी की है कि क्या ओपी (जिन्होंने इसे स्वीकार किया है) इस उत्तर के बारे में क्या, यदि कुछ भी सही है या मददगार है, पर प्रकाश डाल सकते हैं। और मैंने इस पोस्ट के शीर्ष पर एक अस्थायी बैनर जोड़ा है ताकि मैं और अधिक भ्रमित न हो। यदि यह उत्तर मौजूद है, तो इसका सुधरा हुआ रूप उस बैनर में वर्तमान में कुछ जानकारी को सम्मिलित करेगा।
एलियाह कगन

आप बस इस्तेमाल कर सकते हैं su, जो कि
बजे

@FliiFe /usr/binरूट विशेषाधिकार के लिए फ़ाइलों की अनुमतियों (या स्वामित्व) को ठीक करना आवश्यक है, लेकिन आप suअधिकांश Ubuntu सिस्टम पर रूट नहीं कर सकते क्योंकि रूट लॉगिन डिफ़ॉल्ट रूप से अक्षम हैं। इसके विपरीत sudoऔर pkexec, जब आप suरूट शेल प्राप्त करने या रूट के रूप में कमांड चलाने के लिए उपयोग करते हैं, तो आपको रूट का पासवर्ड प्रदान करना होगा, न कि अपना। लेकिन उबंटू में डिफ़ॉल्ट रूप से रूट का कोई पासवर्ड नहीं है (जो यह कहना है कि रूट के लिए पासवर्ड-आधारित प्रमाणीकरण हमेशा विफल हो जाएगा, कि एक रिक्त पासवर्ड दर्ज करने से काम होगा)। देखें RootSudo जानकारी के लिए।
एलिया कगन

4

लाइव सीडी / पेनड्राइव से चलने पर भी, आपको अपनी chmodकमांड के साथ उपसर्ग करना होगा sudo। तो आपके कदम निम्नलिखित की तरह होंगे:

  1. लाइव सीडी / पेनड्राइव से बूट करें
  2. जांचें कि क्या आपकी डिस्क पहले से ही स्वचालित थी (और कहां)। यदि नहीं, तो इसे माउंट करें (नीचे देखें)
  3. sudo chmod 0755 <path>अनुमतियों को समायोजित करने के लिए उपयोग करें

यह कैसे पता लगाया जाए कि आपकी डिस्क कहां माउंट है: एक टर्मिनल विंडो से, रन mount(बिना तर्क के)। यह सभी माउंट किए गए उपकरणों को सूचीबद्ध करेगा। typeसूचीबद्ध के लिए जाँच करें - आप एक "वास्तविक फ़ाइल सिस्टम" का उपयोग न करते हुए सब कुछ छोड़ सकते हैं (आपकी डिस्क शायद ext3 या ext4 का उपयोग करती है - आप सुनिश्चित कर सकते हैं कि आप proc, sysfs और इसी तरह की चीजों को छोड़ दें)। यदि कुछ आशाजनक लगता है (जैसा दिख रहा है /dev/sda1 on /media/sda1 type ext3), ls /media/sda1तो यह देखने के लिए कि क्या यह देखने के लिए इसकी सामग्री की जाँच करें ।

यदि यह घुड़सवार नहीं है, आप के साथ जांच कर सकते हैं /devप्रविष्टियों जहां डिस्क हो सकता है (का उपयोग कर ls /dev/ |grep '/dev/sdउपलब्ध उपकरणों के लिए जाँच करने के लिए, अपने डिस्क की तरह दिखना चाहिए /dev/sdaX, /dev/sdbXया जैसे - एक्स एक नंबर बताते हैं)। इसकी तुलना घुड़सवार उपकरणों की सूची से करें। यदि यह नहीं है, तो इसे माउंट करने की कोशिश करें और इसकी सामग्री की जांच करें (जैसा कि ऊपर दिखाया गया है)। इसे माउंट करने के लिए, पहले एक माउंटपॉइंट बनाएं, उदाहरण के लिए sudo mkdir /mnt/mydisk, फिर डिवाइस का उपयोग करके डिवाइस को माउंट करने का प्रयास करें mount /dev/sda1 /mnt/mydiskऔर इसका उपयोग करके सामग्री की जांच करें ls /mnt/mydisk

एक बार जब आप वहाँ सही डिस्क प्राप्त करते हैं, तो आप अपने usr dir पर वापस अनुमतियाँ बदलने के लिए जा सकते हैं sudo chmod 0755 /mnt/mydisk/usr:।

यदि आप मूल रूप chmodसे -Rपैरामीटर का उपयोग करके कमांड को फिर से चलाते हैं, तो अब भी आप मुश्किल में पड़ सकते हैं । उस स्थिति में या तो आप प्रत्येक प्रविष्टि को मैन्युअल रूप से ठीक करने का प्रयास कर सकते हैं - या आप सीधे स्थापित करने के लिए जा सकते हैं ...


मैंने माउंट पॉइंट बनाने की कोशिश की, लेकिन मुझे एक त्रुटि मिली जो माउंट पॉइंट mnt / mydisk को पढ़ता है वह मौजूद नहीं है mydisk को किसी चीज़ से बदला जाना है और सिर्फ रिकॉर्ड के लिए मैंने लिखा mount /dev/sda /mnt/mydiskहैroot@Ubuntu:/dev#
vin

आपने माउंट कमांड (जैसा कि वर्णित है) और बी) जारी करने से पहले a) उस माउंट पॉइंट (निर्देशिका) का निर्माण किया था और साथ ही प्रमुख स्लैश के लिए भी ध्यान रखा था? कोशिश करें mkdir -p /mnt/mydisk && mount /dev/sda1 /mnt/mydisk(मुझे नहीं लगता कि आपके पास कोई विभाजन नहीं है /dev/sda, इसलिए आप विभाजन संख्या को भी याद कर चुके होंगे। सुनिश्चित करें कि आप सही उपकरण निर्दिष्ट करते हैं (या माउंट विफल हो जाएगा)
Izzy

1

मुझे लगता है कि मैट सही है, आपको बिट को / usr / bin में जोड़ने के लिए रूट होना चाहिए, लेकिन निश्चित रूप से sudo टूट गया है। यदि आपके पास एक रूट पासवर्ड है, तो आप इसे रूट के रूप में लॉगऑन करने के लिए उपयोग कर सकते हैं और फिर उपरोक्त कमांड के साथ अनुमतियों को ठीक कर सकते हैं। यदि आप, हालांकि, (और मैं भी नहीं) तो यह शायद सबसे अच्छा होगा:

  • लिनक्स लाइव सीडी से बूट करें
  • वहां जड़ हो जाओ
  • उपरोक्त सिस्टम के साथ विभाजन को माउंट करें
  • फिर एक टर्मिनल का उपयोग करके उस फ़ाइल सिस्टम पर अनुमतियों को सीधा करें।

रूट हमेशा यूजर नंबर 0 होता है इसलिए किसी भी सिस्टम पर रूट अन्य फाइल सिस्टम पर रूट करने की अनुमति में बदलाव कर सकता है।


1

मुझे ज्यादा ज्ञान नहीं है। लेकिन इन कदमों ने मेरी मशीन को दोबारा शुरू किए बिना भी मेरी समस्या को हल कर दिया। इन कदमों का अनुसरण करें:

su root
<enter root password>
cd /usr
chmod -R 755 *

1
आप कम से कम "cd" कमांड याद कर रहे हैं। यदि आप इसे इस तरह से करते हैं तो आप रूट के लिए होम डायर पर "चामोद" कर रहे हैं। इससे हालात और खराब होंगे।
रिनविंड

thaks ... मेरे उत्तर को संपादित किया ... मैं / usr फ़ोल्डर में था
मनु मोहन थेकेथथ

2
यह केवल तभी काम करता है, अगर कोई पासवर्ड सेट हो root, जो उबंटू का डिफ़ॉल्ट कॉन्फ़िगरेशन नहीं है।
डेविड फ़ॉस्टर

1

अपनी स्थानीय लिपियों के लिए अनुमतियाँ सेट करने के प्रयास में, मैंने गलती से sudo अनुमति और स्वामित्व बदल दिया। मैं निम्नलिखित करके रूट को sudo के स्वामित्व को वापस बदलने में सक्षम था:

चरण 1: ubuntu पुनर्प्राप्ति मोड पर स्विच करें । यदि आप इस प्रक्रिया से अनजान हैं, तो आप यहां एक उत्तर दे सकते हैं: /ubuntu//a/172346/223901

चरण 2: एक बार पुनर्प्राप्ति मोड में, रूट का चयन करें - ड्रॉप टू रूट शेल प्रॉम्प्ट

चरण 3: निम्नलिखित कमांड करें

mount -o remount,rw /
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
reboot

अपने सिस्टम को सामान्य रूप से बूट करने के लिए प्रतीक्षा करें और आप sudo के स्वामित्व को मूल रूप से देखेंगे।

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