वास्तविक और प्रभावी उपयोगकर्ता आईडी के बीच अंतर बनाया गया है क्योंकि आपको अस्थायी रूप से किसी अन्य उपयोगकर्ता की पहचान लेने की आवश्यकता हो सकती है (अधिकांश समय, यह root
होगा, लेकिन यह कोई उपयोगकर्ता हो सकता है)। यदि आपके पास केवल एक उपयोगकर्ता आईडी थी, तो बाद में किसी भी उपयोगकर्ता को बदलने के लिए root
के विशेषाधिकारों का उपयोग करके, आपके मूल उपयोगकर्ता आईडी पर वापस जाने का कोई तरीका नहीं होगा (आपके शब्द को मंजूरी देने के अलावा, और यदि आप root
हैं, तो root
के विशेषाधिकारों का उपयोग करके) ।
तो, वास्तविक उपयोगकर्ता आईडी वह है जो आप वास्तव में हैं (जो प्रक्रिया का मालिक है), और प्रभावी उपयोगकर्ता आईडी वह है जो ऑपरेटिंग सिस्टम निर्णय लेने के लिए देखता है कि आपको कुछ करने की अनुमति है या नहीं (ज्यादातर समय, कुछ अपवाद हैं)।
जब आप लॉग इन करते हैं, तो लॉगिन शेल वास्तविक फ़ाइल और वास्तविक उपयोगकर्ता आईडी को उसी फ़ाइल (आपके असली उपयोगकर्ता आईडी) को पासवर्ड फ़ाइल द्वारा आपूर्ति के रूप में सेट करता है।
अब, यह भी होता है कि आप एक setuid कार्यक्रम क्रियान्वित, और किसी अन्य उपयोगकर्ता के रूप में चल अलावा (जैसे root
) setuid कार्यक्रम भी अपनी ओर से कुछ करने के लिए माना जाता है। यह कैसे काम करता है?
सेटयूड प्रोग्राम निष्पादित करने के बाद, इसमें आपकी असली आईडी होगी (क्योंकि आप प्रक्रिया स्वामी हैं) और फ़ाइल स्वामी के प्रभावी उपयोगकर्ता आईडी (उदाहरण के लिए root
) क्योंकि यह सेट्यूइड है।
कार्यक्रम सुपरसियर विशेषाधिकारों के साथ जो भी जादू करने की आवश्यकता है और फिर आपकी ओर से कुछ करना चाहता है। इसका मतलब है, ऐसा करने का प्रयास करना जो आपको करने में सक्षम नहीं होना चाहिए विफल होना चाहिए। इससे ऐसा कैसे होता है? खैर, स्पष्ट रूप से असली उपयोगकर्ता आईडी में अपनी प्रभावी उपयोगकर्ता आईडी बदलकर!
अब सेटुइड प्रोग्राम का वापस स्विच करने का कोई तरीका नहीं है क्योंकि सभी कर्नेल जानता है कि आपकी आईडी है और ... आपकी आईडी। बैंग, तुम मर चुके हो
यह सहेजा गया सेट-उपयोगकर्ता आईडी है।
एफवाईआई - विकिपीडिया पृष्ठ पर उल्लिखित फ़ाइल सिस्टम उपयोगकर्ता आईडी भी है: https://en.wikipedia.org/wiki/User_identifier –