यह शायद मेरी सबसे अजीब चीजों में से एक है जो लोग हर समय गड़बड़ करते हैं। SUID / GUID बिट और स्टिकी-बिट 2 पूरी तरह से अलग चीजें हैं।
यदि आप करते हैं तो man chmod
आप SUID और स्टिकी-बिट्स के बारे में पढ़ सकते हैं। आदमी पेज यहाँ उपलब्ध है के रूप में अच्छी तरह से।
पृष्ठभूमि
अंश
प्रभावित उपयोगकर्ताओं के लिए अक्षर rwxXst फ़ाइल मोड बिट्स का चयन करें: पढ़ें (r), लिखें (w), निष्पादित करें (या निर्देशिकाओं की खोज करें) (x), निष्पादित करें / खोजें तभी करें जब फ़ाइल निर्देशिका है या पहले से ही कुछ के लिए अनुमति है। उपयोगकर्ता (एक्स), सेट उपयोगकर्ता या समूह आईडी निष्पादन (ओं) पर , प्रतिबंधित विलोपन ध्वज या
चिपचिपा बिट (टी) ।
SUID / GUID
उपरोक्त मैन पेज जो कहना चाह रहा है वह यह है कि एक्स बिट में rwxrwxrwx में उपयोगकर्ता ऑक्टल (rwx का पहला समूह) और समूह ऑक्टल (rwx का दूसरा समूह) के लिए एक अतिरिक्त स्थिति ले सकता है जहां x हो जाता है a s। जब यह फ़ाइल तब होती है जब निष्पादित किया जाता है (यदि यह एक कार्यक्रम है और सिर्फ एक शेल स्क्रिप्ट नहीं है) स्वामी या फ़ाइल के समूह की अनुमति से चलेगा।
इसलिए यदि फ़ाइल रूट के स्वामित्व में है और SUID बिट चालू है, तो प्रोग्राम रूट के रूप में चलेगा। भले ही आप इसे एक नियमित उपयोगकर्ता के रूप में निष्पादित करें। यही बात GUID बिट पर लागू होती है।
अंश
सेट और सेट बिट्स
chmod एक नियमित फ़ाइल के सेट-समूह-आईडी बिट को साफ करता है यदि फ़ाइल का समूह आईडी उपयोगकर्ता के प्रभावी समूह आईडी या उपयोगकर्ता के पूरक समूह आईडी में से एक से मेल नहीं खाता है, जब तक कि उपयोगकर्ता के पास उपयुक्त विशेषाधिकार न हों। अतिरिक्त प्रतिबंधों के कारण MODE या Rerm के सेट-यूज़र-आईडी और सेट-ग्रुप-आईडी बिट्स को अनदेखा किया जा सकता है। यह व्यवहार अंतर्निहित chmod सिस्टम कॉल की नीति और कार्यक्षमता पर निर्भर करता है। जब संदेह हो, तो अंतर्निहित सिस्टम व्यवहार की जांच करें।
जब तक आप स्पष्ट रूप से अन्यथा निर्दिष्ट नहीं करते हैं तब तक chmod एक निर्देशिका के सेट-यूजर-आईडी और सेट-ग्रुप-आईडी बिट्स को संरक्षित करता है। आप बिट्स को यू + एस और जीएस जैसे प्रतीकात्मक मोड के साथ सेट या साफ़ कर सकते हैं, और आप बिट्स को एक संख्यात्मक मोड के साथ सेट (लेकिन स्पष्ट नहीं) कर सकते हैं।
SUID / GUID उदाहरण
कोई suid / गाइड नहीं - बस बिट्स rwxr-xr-x सेट हैं।
$ ls -lt b.pl
-rwxr-xr-x 1 root root 179 Jan 9 01:01 b.pl
suid & user का निष्पादन योग्य सक्षम (लोअरकेस s) - बिट्स rwsr-xrx सेट हैं।
$ chmod u+s b.pl
$ ls -lt b.pl
-rwsr-xr-x 1 root root 179 Jan 9 01:01 b.pl
सक्षम और निष्पादन योग्य बिट अक्षम (अपरकेस एस) - बिट्स rwSr-xr-x सेट हैं।
$ chmod u-x b.pl
$ ls -lt b.pl
-rwSr-xr-x 1 root root 179 Jan 9 01:01 b.pl
गाइड और समूह का निष्पादन योग्य सक्षम (लोअरकेस s) - बिट्स rwxr-sr-x सेट हैं।
$ chmod g+s b.pl
$ ls -lt b.pl
-rwxr-sr-x 1 root root 179 Jan 9 01:01 b.pl
गाइड सक्षम और निष्पादन योग्य बिट अक्षम (अपरकेस एस) - बिट्स rwxr-Sr-x सेट हैं।
$ chmod g-x b.pl
$ ls -lt b.pl
-rwxr-Sr-x 1 root root 179 Jan 9 01:01 b.pl
चिपचिपा सा
दूसरी ओर चिपचिपा सा है t
, जैसे कि /tmp
निर्देशिका के साथ :
$ ls -l /|grep tmp
drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp
इस बिट को हमेशा "प्रतिबंधित विलोपन बिट" कहा जाना चाहिए था, जो वास्तव में इसे दर्शाता है। जब यह मोड बिट सक्षम हो जाता है, तो यह एक ऐसी निर्देशिका बनाता है कि उपयोगकर्ता केवल इसके भीतर मौजूद फ़ाइलों और निर्देशिकाओं को हटा सकते हैं, जिसके वे मालिक हैं।
अंश
संक्षिप्त विवरण फ्लैग या स्टिकी बीआईटी
प्रतिबंधित विलोपन ध्वज या चिपचिपा बिट एक एकल बिट है, जिसकी व्याख्या फ़ाइल प्रकार पर निर्भर करती है। निर्देशिकाओं के लिए, यह
अप्रकाशित उपयोगकर्ताओं को निर्देशिका में किसी फ़ाइल को हटाने या नाम बदलने से रोकता है जब तक कि वे फ़ाइल या निर्देशिका के मालिक न हों; इसे निर्देशिका के लिए प्रतिबंधित विलोपन ध्वज कहा जाता है, और सामान्यतः विश्व-योग्य निर्देशिकाओं जैसे / tmp पर पाया जाता है। कुछ पुराने सिस्टम पर नियमित फ़ाइलों के लिए, बिट स्वैप प्रोग्राम पर प्रोग्राम की टेक्स्ट इमेज को सेव करता है, इसलिए इसे चलाने पर अधिक तेज़ी से लोड होगा; इसे चिपचिपा सा कहा जाता है।