यह वास्तव में कोई फर्क नहीं पड़ता कि अगर /bin(या किसी अन्य मानक निर्देशिका में जहां निष्पादनयोग्य फाइलें रखी जाती हैं) रूट या नहीं द्वारा लिखित हैं। मेरे द्वारा उपयोग किए जा रहे लिनक्स सर्वर पर, वे मूल रूप से लिखने योग्य हैं, लेकिन मेरी OpenBSD मशीन पर, वे नहीं हैं।
जब तक वे समूह या "अन्य" द्वारा लिखने योग्य नहीं हैं!
कोई सुरक्षा समस्या नहीं है, उदाहरण के लिए
-rwxr-xr-x 1 root root 126584 Feb 18 2016 /bin/ls
यदि कोई इसे अधिलेखित करना चाहता था, तो उन्हें मूल होना चाहिए, और यदि वे हैं rootऔर इसे अधिलेखित करते हैं, तो वे या तो हैं
- एक नया संस्करण स्थापित करना, या
- अनाड़ी, या
- रूट अनुमतियों के साथ एक हमलावर ।
विचार करने के लिए एक और बात यह है कि रूट फ़ाइल में कोई फर्क नहीं पड़ता कि क्या यह सुरक्षित है या नहीं, क्योंकि ... लिख सकता है।
ध्यान दें कि "स्क्रिप्ट" बाइनरी फ़ाइल के रूप में एक निष्पादन योग्य है। एक स्क्रिप्ट को लिखने योग्य होने की आवश्यकता नहीं है "क्योंकि यह एक पाठ फ़ाइल है"। यदि कुछ भी है, तो इसे संभवतः उसी निर्देशिका में अन्य निष्पादन योग्य के रूप में एक ही अनुमति होनी चाहिए।
अब सब कुछ पर अनुमतियाँ बदलते मत जाओ! यह सभी प्रकार के कहर को मिटा सकता है और संभावित रूप से भ्रमित पैकेज प्रबंधकों को सत्यापित कर सकता है जो अनुमतियाँ ठीक से सेट हैं। यदि आप गलती से सुरक्षा-महत्वपूर्ण एप्लिकेशन पर गलत तरीके से अनुमतियों को बदल देते हैं तो यह सिस्टम को कमजोर बना सकता है।
बस मान निष्पादनयोग्य पर अनुमतियों को सही ढंग से स्थापित कर रहे हैं कि, जब तक आप कुछ है जो दिखता है लगता है वास्तव में अजीब है, इस स्थिति में आप शायद बजाय यह सत्यापित सामान बदलने के शुरू करने के लिए प्रासंगिक पैकेज मेंटेनर संपर्क करना चाहिए।
टिप्पणियों से और चैट पर , कुछ इतिहास के लिए एक कॉल था।
लिनक्स पर बायनेरिज़ पर अनुमतियों का इतिहास कुछ भी नहीं है जिसके बारे में मुझे कुछ भी पता नहीं है। यह अनुमान लगाया जा सकता है कि उन्हें निर्देशिका से अनुमतियाँ विरासत में मिली हैं, या केवल umaskलिनक्स के डिफ़ॉल्ट से, लेकिन मुझे वास्तव में नहीं पता है।
मुझे क्या पता है कि OpenBSD बेस सिस्टम 1 में बायनेरिज़ को डिफ़ॉल्ट रूप से अनुमति मोड 555 के साथ स्थापित करता है ( -r-xr-xr-x)। यह एक मेकफाइल टुकड़ा में निर्दिष्ट है /usr/share/mk/bsd.own.mkजिसमें BINMODE555 सेट करता है (जब तक कि यह पहले से सेट न हो)। यह बाद में उपयोग किया जाता है जब निष्पादन के दौरान स्थापित किया जाता make buildहै /usr/src।
मैंने इस फाइल के लिए एनोटेट सीवीएस लॉग पर एक नजर डाली , और पाया कि फाइल में यह लाइन अपरिवर्तित है क्योंकि इसे 1995 में NetBSD से आयात किया गया था।
NetBSD पर, फ़ाइल को पहली बार 1993 में CVS में रखा गया था, जिसमें BINMODE555 सेट थे।
फ्रीबीएसडी परियोजना ने लगता है कि कम से कम 1994 के बाद से नेटबीएसडी के रूप में एक ही फाइल का उपयोग किया है , और बाद में कमिट के साथ इस संदेश में एक संकेत जोड़ता है कि पुरानी फाइलें बर्कले सॉफ्टवेयर वितरण के 4.4BSD रिलीज से थीं।
इसके अलावा, बर्कले में सीएसआरजी ने एससीएससी में स्रोतों को रखा था, लेकिन उनकी रिपॉजिटरी GitHub 2 पर Git रूप में उपलब्ध है । फ़ाइल है कि हम forencic इलाज यहां दे रहे हैं किया गया है लगता है द्वारा कीथ बोस्टिक 1990 में (या उसे करीब निकटता में किसी को)।
तो वो कहानी है। यदि आप चाहते हैं क्यों , तो मुझे लगता है कि हम कीथ पूछने के लिए होगा। मैं एक बदलाव के लिए एक प्रतिबद्ध संदेश देखने की उम्मीद कर रहा था जिसमें कहा गया था कि " यह 555 होना चाहिए क्योंकि ... ", लेकिन नहीं।
1 बीएसडी सिस्टम में लिनक्स की तुलना में "बेस सिस्टम" और "3 पार्टी पैकेज" (पोर्ट / पैकेज) में एक सख्त विभाजन होता है। आधार प्रणाली एक सुसंगत इकाई है जो ऑपरेटिंग सिस्टम को चलाने के लिए सुविधाओं का एक पूरा सेट प्रदान करती है, जबकि बंदरगाहों या पैकेजों को "स्थानीय सॉफ़्टवेयर" के रूप में देखा जाता है और इसके तहत स्थापित किया जाता है /usr/local।
२ यूनिक्स के Un० के बाद से रिलीज होने वाली एक अधिक व्यापक गिटहॉस रिपॉजिटरी भी उपलब्ध है ।
rootने बाइनरी फ़ाइल की अनुमति क्यों लिखी है? अगर उस पैकेज को अपग्रेड करने में मदद मिलेगी तो कुछ नहीं।