ऐसा लगता है कि मुझे SUID बिट के अर्थशास्त्र को समझने में कुछ परेशानी है, शायद कोई मुझे स्थिति को स्पष्ट करने में मदद कर सकता है।एसयूआईडी (सेट-यूजर आईडी)
SUID बिट के अर्थशास्त्र की मेरी समझ निम्नानुसार है: जब मैं एक फ़ाइल के साथ SUID बिट सेट करता हूं, तो फ़ाइल फ़ाइल के मालिक के रूप में निष्पादित की जाएगी, न कि फ़ाइल के कॉलर के रूप में। तो इस व्यवहार का परीक्षण करने के मैं निम्नलिखित अजगर पटकथा लिखी:
#!/usr/bin/python3 -O
import os
def main():
print('Real UserID: %d' % os.getuid())
print('Effective UserID: %d' % os.geteuid())
if __name__ == '__main__':
main()
है कि मैं इसी समूह "testuser" के साथ "testuser" नाम और फाइल अनुमति समायोजित एक उपयोगकर्ता बनाया के बाद (chown testuser फ़ाइल, chgrp testuser फ़ाइल, chmod u + s, g + x फ़ाइल)। इसके बाद मैंने अपना मुख्य उपयोगकर्ता "testuser" समूह में जोड़ा ताकि मैं समूह के सदस्य के रूप में फ़ाइल निष्पादित कर सकूं। सब के बाद कि फाइल अनुमति इस तरह देखा:
-rwsr-xr-- 1 testuser testuser 168 2011-04-02 13:35 procred.py*
तो जब मैं testuser के रूप में प्रवेश कर रहा हूँ स्क्रिप्ट उत्पादन का उत्पादन:
Real UserID: 1001
Effective UserID: 1001
... और जब मैं अपने मुख्य रूप स्क्रिप्ट चलाने उपयोगकर्ता स्क्रिप्ट आउटपुट:
Real UserID: 1000
Effective UserID: 1000
अब मेरी समझ के रूप में स्क्रिप्ट uid 1001 उत्तरार्द्ध निष्पादन में (फ़ाइल के मालिक) के साथ उपयोगकर्ता के रूप में चलाने चाहिए था। क्या मुझे पूरी अवधारणा गलत हो रही है या मेरी गलती कहां है?