अनुमति निरीक्षक
ऑक्टल अनुमति समझें- ✓कोई गंभीर समस्या नहीं मिली
परिचय
अनुमति निरीक्षक एक ऑक्टल मोड (जैसे 0750) को उसके प्रतीकात्मक रूप में समझता है और उन बिट्स को चिह्नित करता है जो सुरक्षा समीक्षाओं में सबसे अधिक मायने रखते हैं: सभी के लिए लिखने योग्य अनुमतियाँ और setuid बिट।
ऑक्टल मोड तीन या चार अंक होते हैं जहाँ हर अंक उपयोगकर्ता की एक श्रेणी — स्वामी, समूह, अन्य — के लिए पढ़ने (4), लिखने (2) और निष्पादन (1) का योग होता है। शुरुआती चौथा अंक विशेष बिट्स दर्शाता है: setuid (4), setgid (2) और sticky (1)।
उद्देश्य
- किसी भी तीन- या चार-अंकीय ऑक्टल मोड को rwx प्रतीकात्मक संकेतन में बदलना।
- मौजूद होने पर विशेष बिट्स (setuid, setgid, sticky) की पहचान करना।
- सभी के लिए लिखने योग्य अनुमतियों को उच्च और setuid को चेतावनी के रूप में चिह्नित करना।
इनपुट
- तीन- या चार-अंकीय ऑक्टल मोड, जैसे 0750 या 644।
- अंक 0–7 होने चाहिए; अक्षर या प्रतीक अस्वीकार होते हैं।
यह कैसे काम करता है
मान को चार अंकों तक बढ़ाया जाता है (0750 वही रहता है, 644 बनता है 0644)। हर अंक अपने पढ़ें/लिखें/निष्पादन बिट्स में विभाजित होता है: उदाहरण के लिए 7 = rwx, 5 = r-x, 0 = ---।
पहला अंक विशेष बिट्स से मेल खाता है: 4 suid जोड़ता है, 2 sgid जोड़ता है, 1 sticky जोड़ता है।
यदि "अन्य" श्रेणी में लिखने की अनुमति है (अंतिम अंक में कोई 2, 3, 6 या 7), तो उपकरण उच्च निष्कर्ष रिपोर्ट करता है: कोई भी स्थानीय उपयोगकर्ता ऑब्जेक्ट बदल सकता है। यदि setuid सेट है, तो चेतावनी स्वामित्व और अखंडता सत्यापित करने को कहती है।
परीक्षण योग्य उदाहरण
आज़माएँ — विश्लेषण आपके ब्राउज़र में स्थानीय रूप से चलता है।
उदाहरण
मोड: 4755
अपेक्षित आउटपुट
प्रतीकात्मक: suid rwxr-xr-x उच्च: SUID सेट है। स्वामित्व और फ़ाइल की अखंडता सत्यापित करें। नोट: स्वामी और समूह श्रेणियाँ अन्य के लिए लिखने योग्य नहीं हैं।
आउटपुट पढ़ना
- प्रतीकात्मक पंक्ति बताती है कि कौन पढ़, लिख और निष्पादित कर सकता है।
- सभी के लिए लिखने योग्य फ़ाइल या निर्देशिका (अंतिम अंक 2, 3, 6 या 7) का मतलब है कि कोई भी स्थानीय उपयोगकर्ता उसे बदल सकता है — आमतौर पर गलती, सिवाय /tmp जैसी जानबूझकर साझा निर्देशिकाओं के।
- setuid निष्पादन योग्य फ़ाइल स्वामी के विशेषाधिकारों के साथ चलते हैं; समझौता किया गया setuid बाइनरी विशेषाधिकार वृद्धि का मार्ग है, इसलिए स्वामित्व root का होना चाहिए और बाइनरी भरोसेमंद।
जोखिम
- सभी के लिए लिखने योग्य फ़ाइलें किसी भी स्थानीय खाते — समझौता किए गए खाते सहित — द्वारा छेड़छाड़ की अनुमति देती हैं।
- गैर-root स्वामित्व वाले बाइनरी पर अप्रत्याशित setuid बिट विशेषाधिकार वृद्धि का क्लासिक वेक्टर है।
- /tmp पर sticky बिट सामान्य है; कहीं और sticky बिट आकस्मिक हो सकता है।
सीमाएँ
- उपकरण एक मोड की व्याख्या करता है, वास्तविक फ़ाइल की नहीं — यह वास्तविक स्वामी या समूह नहीं बता सकता।
- यह ACL (setfacl) पर विचार नहीं करता, जो पारंपरिक rwx मॉडल को ओवरराइड करती हैं।
- विशेष बिट चेतावनियाँ संदर्भ पर निर्भर हैं; उपकरण नहीं जान सकता कि setuid बाइनरी जानबूझकर है।
आधिकारिक संदर्भ
FAQ
विशेष बिट्स क्या करते हैं?
setuid किसी प्रोग्राम को फ़ाइल स्वामी की पहचान के साथ चलाता है (आमतौर पर root); setgid समूह के लिए वही करता है और निर्देशिकाओं पर नई फ़ाइलों को निर्देशिका का समूह विरासत में देता है; sticky बिट निर्देशिका पर विलोपन को फ़ाइल स्वामी तक सीमित करता है (जैसे /tmp पर)।
फ़ाइलों के लिए 644 अक्सर ठीक क्यों, पर 666 नहीं?
644 स्वामी को लिखने की अनुमति देता है और बाकी सभी को केवल पढ़ने की। 666 फ़ाइल को सभी के लिए लिखने योग्य बनाता है — कोई भी स्थानीय उपयोगकर्ता उसे बदल सकता है।
क्या उपकरण वास्तविक फ़ाइल जाँचता है?
नहीं। समझने के लिए मोड चिपकाएँ; वास्तविक फ़ाइल की ऑडिट के लिए ls -l या stat उपयोग करें।