“चामोद -R 777 /” विनाशकारी क्यों है?


255

यह फ़ाइल अनुमति के बारे में एक Canonical प्रश्न है और 777 "विनाशकारी" क्यों है।

मैं यह नहीं पूछ रहा हूं कि इस समस्या को कैसे ठीक किया जाए, क्योंकि सर्वर फॉल्ट (ओएस को पुनर्स्थापित करें) पर पहले से ही एक टन का संदर्भ है। यह कुछ भी विनाशकारी क्यों करता है?

यदि आप कभी भी इस कमांड को चलाते हैं तो आप अपने ऑपरेटिंग सिस्टम को तुरंत नष्ट कर देते हैं। मैं स्पष्ट नहीं हूं कि प्रतिबंध हटाने से मौजूदा प्रक्रियाओं पर कोई प्रभाव क्यों पड़ता है। उदाहरण के लिए, अगर मैंने किसी चीज तक पहुंच नहीं पढ़ी है और टर्मिनल में एक त्वरित गलती के बाद अचानक मेरी अब अच्छी तरह से पहुंच है ... तो क्या लिनक्स को तोड़ने का कारण बनता है?


2
जब मैंने यह प्रश्न देखा तो मैंने अपनी सांस रोक रखी है।
अलीरज़ा सावानंद

जवाबों:


344

सबसे पहले एक छोटी शब्दावली नाइटपिक: अनुमतियाँ chmodनहीं निकालता है। यह परिवर्तन उन्हें।


अब इस मुद्दे का मांस - मोड का 777अर्थ है "कोई भी इस फ़ाइल को पढ़ सकता है, लिख सकता है या निष्पादित कर सकता है" - आपने किसी को भी (प्रभावी रूप से) जो कुछ भी चाहते हैं उसे करने की अनुमति दी है

अब, यह बुरा क्यों है?

  1. आपने अपने सिस्टम की प्रत्येक फ़ाइल को बस पढ़ने / संशोधित करने दिया है।
    • चुंबन पासवर्ड सुरक्षा अलविदा (किसी छाया फ़ाइल पढ़ सकते हैं और अपने पासवर्ड दरार, लेकिन क्यों परेशान? बस पासवर्ड बदलने! यह बहुत आसान है!)।
    • अपनी बाइनरी अलविदा के लिए सुरक्षा चुंबन (किसी को सिर्फ एक नया लिख सकते हैं loginउन्हें हर बार में देता है कि कार्यक्रम)।
    • चुंबन अपनी फ़ाइलें अलविदा: एक उपयोगकर्ता misdirects rm -r /और यह सब खत्म हो गया। ओएस को कहा गया था कि वे जो कुछ भी चाहते हैं उन्हें करने दें!
  2. आपने शुरू होने से पहले फाइलों पर अनुमतियों की जांच करने वाले हर कार्यक्रम को बंद कर दिया है।
    sudo, sendmailऔर दूसरों के एक मेजबान बस किसी भी अधिक शुरू नहीं होगा। वे कुंजी फ़ाइल अनुमतियों की जांच करेंगे, देखें कि वे वे नहीं हैं जो वे होने वाले हैं, और एक त्रुटि संदेश वापस लाते हैं।
    इसी तरह भयानक रूप sshसे टूट जाएगा (कुंजी फ़ाइलों में विशिष्ट अनुमतियाँ होनी चाहिए, अन्यथा वे "असुरक्षित" हैं और डिफ़ॉल्ट रूप से SSH उनका उपयोग करने के लिए मना कर देंगे।)
  3. आपने उन प्रोग्रामों पर सेट्यूड / सेटगिड बिट्स मिटा दिए हैं जो उनके पास थे।
    मोड 777वास्तव में है । उस अग्रणी अंक की चीजों में बिट और बिट हैं। अधिकांश प्रोग्राम जो सेटिउड / सेटगिड होते हैं, उनमें वह बिट सेट होता है क्योंकि उन्हें कुछ विशेषाधिकारों के साथ चलना चाहिए। वे अब टूट चुके हैं।0777setuidsetgid
  4. आप टूट गए हैं /tmpऔर/var/tmp उस अग्रणी ऑक्टल अंक में दूसरी चीज जो शून्य मिली है sticky bit- वह है जो फाइलों को /tmp(और /var/tmp) उन लोगों द्वारा हटाए जाने से बचाता है जो उनके पास नहीं हैं।
    (दुर्भाग्य से) वहाँ बाहर बुरी तरह से व्यवहार लिपियों के बहुत सारे है कि "साफ" एक करके कर रहे हैं rm -r /tmp/*, और चिपचिपा बिट सेट के बिना पर /tmp आप उस निर्देशिका अलविदा में सभी फाइलों को चूम कर सकते हैं।
    खरोंच फ़ाइलें गायब होने से कुछ बुरी तरह से लिखे गए प्रोग्रामों को परेशान किया जा सकता है ...
  5. आपने /dev /procसमान फाइल सिस्टम में तबाही मचाई है और
    यह पुराने यूनिक्स सिस्टम पर एक समस्या है, जहां /devएक वास्तविक फाइल सिस्टम है, और इसमें जो सामग्री है वह विशेष फाइल के साथ बनाई गई है mknod, क्योंकि अनुमति परिवर्तन रीबूट में संरक्षित किया जाएगा, लेकिन किसी भी सिस्टम पर आपकी डिवाइस अनुमतियाँ बदलने से स्पष्ट सुरक्षा जोखिम (हर TTY पढ़ सकते हैं) से कर्नेल आतंक के कम-संभावित संभावित कारणों तक पर्याप्त समस्याएं हो सकती हैं।
    Credit to @Tonny for pointing out this possibility
  6. सॉकेट्स और पाइप्स टूट सकते हैं, या अन्य समस्याएं हो सकती हैं सॉकेट्स और पाइप पूरी तरह से टूट सकते हैं, या विश्व-लेखन के परिणामस्वरूप दुर्भावनापूर्ण इंजेक्शन के संपर्क में हो सकते हैं।
    Credit to @Tonny for pointing out this possibility
  7. आप अपने सिस्टम पर हर हैट नाम शामिल कर दिया है
    एक बहुत की लोगों को .उनके में PATHवातावरण चर (आप नहीं करना चाहिए!) - यह एक अप्रिय आश्चर्य के रूप में अब के कारण किसी को भी आसानी से एक आदेश की तरह नाम की एक फ़ाइल ड्रॉप कर सकते हैं (कह सकते हैं makeया ls, और उनके दुर्भावनापूर्ण कोड को चलाने के लिए आपको एक शॉट देना होगा।
    Credit to @RichHomolka for pointing out this possibility
  8. कुछ सिस्टम पर chmodएक्सेस कंट्रोल लिस्ट (ACL) को रीसेट कर देंगे।
    इसका मतलब है कि आप हर जगह अनुमतियों को ठीक करने के अलावा अपने सभी ACL को फिर से बना सकते हैं (और कमांड के विनाशकारी होने का एक वास्तविक उदाहरण है)।
    Credit to @JamesYoungman for pointing out this possibility

क्या पहले से चल रहे सिस्टम के हिस्से चलते रहेंगे? शायद, थोड़ी देर के लिए।
लेकिन अगली बार जब आपको कोई प्रोग्राम लॉन्च करने की आवश्यकता हो, या किसी सेवा को फिर से शुरू करना हो, या जिस बॉक्स को आप # 2 और # 3 के रूप में चोट की दुनिया के लिए मना करते हैं, उसके ऊपर अपने बदसूरत सिर को पीछे कर दें।


1
/tmpरिबूट के बाद कम से कम कुछ सिस्टम तय किए जाएंगे। हालांकि सब कुछ बहुत सारी अन्य चीजों को तोड़ता हुआ प्रतीत होता है। कम से कम वीएम I में सिर्फ इस पर परीक्षण किया गया है कि एक रिबूट /tmpअनुमतियों को तय करता है। स्टार्टअप स्क्रिप्ट में कहीं न कहीं कुछ तो होना चाहिए।
Zoredache

@Zoredache सिस्टम का उपयोग tmpfsआमतौर पर खुद को ठीक करने, लोगों को है कि डिस्क पर / tmp हो सकता है (उनके स्टार्टअप स्क्रिप्ट पर निर्भर करता है)
voretaq7

45
+1 यह इंगित करने के लिए कि सेतु और सेटगिड को समाप्त कर दिया जाएगा। यह एक बेहद विनाशकारी पहलू है। दौड़ने की कोशिश करें find / -perms -4000 -type fऔर find / -perms -2000 -type fइन झंडों पर भरोसा करने वाले विभिन्न बायनेरिज़ देखें।
काइल स्मिथ

2
"कम foo.txt" की तरह कुछ टाइप करने से निष्पादन योग्य बिट सेट होने की परवाह किए बिना कम से कम बिछाने वाली फ़ाइल को निष्पादित नहीं किया जाएगा। आपको निर्देशिका को कम करने की आवश्यकता होगी। कम से कम आपके रास्ते में था और आपको "कम.टैक्स foo.txt" टाइप करना होगा - वास्तव में कोई आकस्मिक चीज नहीं है। यहां तक ​​कि अगर आप शेल पूरा करने का उपयोग कर रहे थे, तो यह कम से कम बंद हो जाएगा और आपको अभी भी .txt जोड़ना होगा। निष्पादन योग्य बिट सेट के साथ एक यादृच्छिक पाठ फ़ाइल को कॉल करने के लिए आपको ./nameoffile.txt करना होगा।
असली बिल

3
@Deji everyoneउपयोगकर्ता के लिए जो फ़ाइल का मालिक है, समूह है जो फ़ाइल का मालिक में उपयोगकर्ताओं, और उपयोगकर्ताओं को, जो उन मानदंडों में से किसी को पूरा नहीं करते सहित सेट के मिलन के रूप में परिभाषित किया गया है (शाब्दिक तीन अष्टाधारी अनुमति अंक: User, Group, और Other)। दूसरे शब्दों में किसी भी उपयोगकर्ता के पास सिस्टम तक पहुंच है । "इस संदर्भ में" एक्सेस "एक शेल खाता हो सकता है, जो कि मैं सामान्य रूप से इसे कैसे संबोधित करूंगा, लेकिन इसमें वेब फॉर्म / सीजीआई के माध्यम से एक्सेस भी शामिल है जो डिस्क पर डेटा लिखता है: wwwउपयोगकर्ता अब सिस्टम पर किसी भी फाइल को लिख सकता है। , जिसका अर्थ है यादृच्छिक आगंतुक भी।)
voretaq7

102

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

तो यह वास्तव में नहीं है कि सिस्टम नष्ट हो गया है - यह है कि कई उपकरण डिज़ाइन करने में विफल होने पर तुरंत विफल हो जाते हैं।

यदि आप बूट करने के बाद किसी सिस्टम को रिबूट करते हैं chmod 777 -R /, और आप ऐसी प्रक्रियाएँ शुरू कर सकते हैं जिनमें स्पष्ट अनुमति जाँच नहीं है। तो प्रणाली वास्तव में मृत नहीं है, बस कुछ हद तक अनुपयोगी है

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