मैं कैसे निर्देशिका निर्देशिका पर एक chmod वापस कर सकते हैं?


9

मैंने गलती से आदि कमांड पर निम्नलिखित कमांड निष्पादित की:

sudo chmod -R 700 /etc

मुझे पता है कि मैंने कुछ बहुत गलत किया है। मेरा टर्मिनल अब प्रिंट करता है:

I have no name!@ubuntu: /$

मैं अपनी पिछली निर्देशिका को अपनी पूर्ववर्ती स्थिति में कैसे वापस ला सकता हूं?

मैंने अनुमतियां बदलने की कोशिश की लेकिन यह अब विफल हो रहा है। साथ ही, यह बहुत मददगार होगा अगर कोई यह समझा सके कि वास्तव में क्या गलत हुआ जब मैंने उस कमांड को निष्पादित किया आदि यह केवल फ़ाइल अनुमति थी। तो फिर पूरा सिस्टम पूरी तरह से क्यों उड़ा हुआ लगता है? ऐसा क्यों है कि अब कोई लॉगिन पासवर्ड काम नहीं कर रहा है? मुझे पता है कि आदि निर्देशिका में एक फ़ाइल है जो उपयोगकर्ताओं के साथ क्या करना है। लेकिन बदलती अनुमति ने कैसे सब कुछ खतरे में डाल दिया? इसके बारे में कुछ तकनीकी जानकारी बहुत उपयोगी होगी।


3
आपको ls -laRदूसरे रनिंग सिस्टम से डायरेक्टरी लिस्टिंग ( ) की आवश्यकता है। तुम्हारा कौन सा संस्करण है? आप निर्देशिकाओं को 755 और फ़ाइलों को 644 में बदल सकते हैं, लेकिन कुछ में अलग-अलग मोड (जैसे / आदि / छाया जैसे) होने चाहिए।
ott--

4
जब आप टाइप sudoकरते हैं, तो आपको इसे अपने सिर में वापस पढ़ना चाहिए क्योंकि "मैं बिना किसी सुरक्षा जाल के अपने सिस्टम पर खुद को परम शक्ति प्रदान कर रहा हूं, क्या मुझे यकीन है कि मुझे पता है कि मैं क्या कर रहा हूं? रिटर्न दबाने से पहले।
msw

1
एक काम कर प्रणाली के साथ, आप उपयोग कर सकते हैं find /etc -type d ! -perm 755 -exec ls -ld {} \;और find etc -type f ! -perm -644 -exec ls -l {} \;गैर मानक मोड के साथ निर्देशिका और फ़ाइलें खोजने के लिए। डेबियन में यह सिर्फ 2 निर्देशिकाएं और 39 फाइलें हैं
ott--

"लेकिन कैसे बदलती अनुमतियां सब कुछ ख़तरे में डालती हैं?" - कुछ चीजें जो उन फाइलों को पढ़ने के लिए आवश्यक थीं, अब उन फाइलों को पढ़ने की अनुमति नहीं है।
user253751

जवाबों:


15

एक बात गलत हो गई: sudoउस आदेश का उपयोग । -Rस्विच बताता है chmod, यदि आप नहीं जानते कि तुम क्या कर रहे हैं (यह मुझे क्या हुआ एक बार मैं: रिकर्सिवली कि निर्देशिका है, जो है, हर मामले में, एक गैर सिफारिश की कार्रवाई (विधर्म हम इसे कहते चाहिए) के लिए अनुमतियां सेट करने आदेश जारी नहीं किया, लेकिन एक दोषपूर्ण जीयूआई ने इसे बनाया, और मेरा सिस्टम तार हो गया)।

यह केवल फ़ाइल अनुमति थी। तो फिर पूरा सिस्टम पूरी तरह से क्यों उड़ा हुआ लगता है?

जीएनयू / लिनक्स फाइल परमिशन के लिए बहुत संवेदनशील है, क्योंकि यह स्थिरता और सुरक्षा को ध्यान में रखकर बनाया गया था । समान GNU / Linux (यानी apache2रूट विशेषाधिकारों और उपयोगों www-data, या इसी तरह के उपयोगकर्ता को छोड़ देता है) में चलने वाले अधिकांश कार्यक्रमों पर लागू होता है , और आपकी 700अनुमति इसे अपनी फ़ाइलों को पढ़ने / लिखने की अनुमति नहीं देगी)।

ऐसा क्यों है कि अब कोई लॉगिन पासवर्ड काम नहीं कर रहा है?

जैसा कि आप पहले ही उल्लेख कर चुके हैं, लॉगिन पासवर्ड एक फ़ाइल में /etc/passwdऔर केवल रूट में संग्रहीत किया जाता है (मुझे लगता है कि आपने इसे नहीं बदला है) इसे पढ़ सकते हैं, लेकिन लॉगिन प्रॉम्प्ट (या जीयूआई लॉगिन) एक गैर-विशेषाधिकार खाते का उपयोग करता है, इसलिए यह नहीं पढ़ सकता है फ़ाइल।

लेकिन बदलती अनुमति ने कैसे सब कुछ खतरे में डाल दिया?

जैसा कि ऊपर कहा गया है, लिनक्स फ़ाइल अनुमतियों के लिए बहुत संवेदनशील है। कुछ प्रोग्राम भी अपनी कॉन्फ़िगरेशन फ़ाइलों की अनुमतियों की जाँच करते हैं और यदि उन्हें उम्मीद नहीं है कि वे बिल्कुल नहीं चलेंगे।

मैं अपनी पिछली निर्देशिका को अपनी पूर्ववर्ती स्थिति में कैसे वापस ला सकता हूं?

यदि आप RPM- आधारित डिस्ट्रो का उपयोग करते हैं rpm --setperms, तो यह कमांड का उपयोग करके किया जा सकता है , यह दर्दनाक रूप से एक-एक करके संकुल को बदल देगा, डेबियन जैसी प्रणाली apt-get --reinstall installपर आपका मित्र है। अन्य समाधान उपलब्ध हो सकते हैं, लेकिन इसके लिए एक कार्य प्रणाली की आवश्यकता होगी।


5

आइए देखें, आपने जो किया है वह संपूर्ण / etc dir में अनुमतियाँ सेट है जैसे कि फ़ाइल / dir के स्वामी के लिए केवल पढ़ने / लिखने / निष्पादित करने की अनुमति दी गई है, बाकी सभी के लिए अस्वीकृत। यदि आप फ़ाइल अनुमति से भ्रमित हैं, तो आप विकिपीडिया: पारंपरिक UNIX अनुमतियों पर अधिक पढ़ सकते हैं ।

आपके सिस्टम को उड़ा देने का कारण यह है क्योंकि कई प्रक्रियाएं उनकी सेटिंग्स को पढ़ नहीं सकती हैं, जो एक्सेस / आदि में असमर्थ है। पूरे राज्य के लिए संपूर्ण / वगैरह रिकवर करना आसान नहीं होगा। ऐसा कैसे करें जो आपके डिस्ट्रो पर निर्भर करेगा, लेकिन मूल रूप से इसका मतलब है कि हर उस पैकेज को रीइंस्टॉल करना जो किसी भी फाइल को / etc में रखता है।

सिस्टम का उपयोग करने में सक्षम होने के लिए एक त्वरित बैंड सहायता के रूप में, इसे ठीक से ठीक करने के लिए (ऊपर / बताए अनुसार, आदि के साथ सामग्री के साथ सभी पैकेजों को पुनर्स्थापित करना), आप कर सकते हैं:

    # sudo find /etc -type d -exec chmod 775 '{}' \;
    # sudo find /etc -type f -exec chmod 664 '{}' \;

उन दो पंक्तियों के साथ, आप सभी / / dir में उदार अनुमतियाँ सेट कर रहे होंगे, मालिक और समूह के लिए पढ़ने / लिखने की अनुमति दी गई है, और बाकी सभी के लिए अनुमति दी गई है। दो चामोड का कारण केवल डेयर पर निष्पादित बिट सेट करना है। कुछ प्रक्रियाएँ शिकायत करेंगी या यहाँ तक कि विफल भी होंगी, जिनमें किसी भी निष्पादन योग्य / भीतर / सहित, लेकिन आपको ऊपर बताए गए पुनर्स्थापना को करने में सक्षम होना चाहिए।

कृपया ध्यान रखें कि जब तक आप मूल अनुमतियाँ पुनर्प्राप्त नहीं करते हैं, तब तक आप कम से कम असुरक्षित स्थिति में हैं।


2
इसके अतिरिक्त, कुछ कार्यक्रम काम नहीं करेंगे; उदाहरण के लिए SSH को कुछ फाइलों पर प्रतिबंधात्मक अनुमति की आवश्यकता होती है। /etc/sudoersदूसरा है।
मेल बोयस

1
लेकिन कुछ फ़ाइलों को /etcकभी भी पढ़ने योग्य नहीं बनाया जाना चाहिए! बैकअप से पुनर्स्थापित करें, इसीलिए आप उनके पास हैं (या, इसीलिए लोग आपसे बैकअप बनाने के लिए आग्रह कर रहे हैं)।
ट्रिपल जूल

0

700 ने समूहों और विश्व उपयोगकर्ताओं के लिए बहुत सारी फाइलों तक पहुंच को हटा दिया है (उदाहरण के लिए अब rwx------अनुमतियां हैं)। उदाहरण के लिए, सभी उपयोगकर्ताओं को पढ़ने में सक्षम होना चाहिए /etc/passwd। आपके सेटअप के साथ, केवल रूट अब पढ़ा जा सकता है /etc/passwd। यदि आप /etc/अप्रत्याशित तरीकों से फ़ाइलों पर अनुमतियों को तोड़ते हैं तो कई चीजें टूट जाएंगी ।

आप एक काम कर रहे सर्वर के आधार पर अनुमतियों (आप अभी भी रूट पर स्विच कर सकते हैं) को मानकर पुन: निर्माण कर सकते हैं, लेकिन यह त्रुटि का खतरा है।

मेरा सुझाव है कि /etc/यदि आपके पास एक है (तो यह सुनिश्चित करें कि पुनर्स्थापना अनुमतियाँ वापस रखती हैं, या, यदि आपका बैकअप समाधान इसका समर्थन करता है, तो बस अनुमतियाँ पुनर्स्थापित करें)।

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