सवाल "Chmod -R 777 /" विनाशकारी क्यों है?


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

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

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


246
2018-02-28 21:25


मूल


जब मैंने यह सवाल देखा तो मैंने अपनी सांस रखी है। - Alireza Savand


जवाब:


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


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

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

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

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


335
2018-02-28 21:46



कम से कम कुछ प्रणालियों पर /tmp रीबूट के बाद तय किया जाएगा। हालांकि सब कुछ अन्य चीजें तोड़ने लगती हैं। कम से कम वीएम में मैंने अभी परीक्षण किया है कि एक रिबूट तय किया गया है /tmp अनुमतियाँ। कहीं स्टार्टअप स्क्रिप्ट में कुछ होना चाहिए। - Zoredache
@Zoredache सिस्टम जो उपयोग करते हैं tmpfs आमतौर पर स्वयं को ठीक करते हैं, जिनके पास डिस्क पर / tmp है हो सकता है (उनकी स्टार्टअप स्क्रिप्ट पर निर्भर करता है) - voretaq7
यह निर्धारित करने के लिए +1 कि setuid और setgid समाप्त हो जाएगा। यह एक बेहद विनाशकारी पहलू है। दौड़ने का प्रयास करें find / -perms -4000 -type f तथा find / -perms -2000 -type f इन झंडे पर निर्भर विभिन्न बाइनरी देखने के लिए। - Kyle Smith
"कम foo.txt" जैसे कुछ टाइप करने से निष्पादन योग्य बिट सेट किए जाने के बावजूद less.txt बिछाने वाली फ़ाइल निष्पादित नहीं की जाएगी। आपको अपने पथ में निर्देशिका कम.txt की आवश्यकता होगी और आपको "less.txt foo.txt" टाइप करना होगा - वास्तव में वहां कोई आकस्मिक चीज़ नहीं है। भले ही आप खोल पूरा करने का उपयोग कर रहे थे, फिर भी यह कम हो जाएगा और आपको अभी भी .txt जोड़ना होगा। निष्पादन योग्य बिट सेट के साथ एक यादृच्छिक पाठ फ़ाइल को कॉल करने के लिए आपको ./nameoffile.txt करना होगा। - The Real Bill
@Deji everyone सेट के संघ के रूप में परिभाषित किया गया है जिसमें उपयोगकर्ता का फ़ाइल है, जो समूह का मालिक है, और जो उपयोगकर्ता उन मानदंडों को पूरा नहीं करते हैं (शाब्दिक रूप से तीन ऑक्टल अनुमति अंक: User, Group, तथा Other)। दूसरे शब्दों में सिस्टम तक पहुंच के साथ कोई भी उपयोगकर्ता। (इस संदर्भ में "एक्सेस" एक खोल खाता हो सकता है, इस प्रकार मैं इसे सामान्य रूप से संबोधित करता हूं, लेकिन इसमें वेब फॉर्म / सीजीआई के माध्यम से पहुंच भी शामिल है जो डिस्क पर डेटा लिखती है: द www उपयोगकर्ता अब सिस्टम पर किसी भी फाइल को लिख सकता है, जिसका अर्थ है यादृच्छिक आगंतुक भी कर सकते हैं।) - voretaq7


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

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

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


100
2018-02-28 21:33