एक रूट उपयोगकर्ता को "रूट" नाम देने की आवश्यकता नहीं है। whoamiउपयोगकर्ता आईडी के साथ पहला उपयोगकर्ता नाम लौटाता है 0। $USERउपयोगकर्ता में लॉग इन का नाम है, जिसमें उपयोगकर्ता आईडी हो सकती है 0, लेकिन एक अलग नाम है।
यह जांचने के लिए एकमात्र विश्वसनीय कार्यक्रम है कि खाता रूट के रूप में लॉग इन है या नहीं:
id -u
मैं प्रभावी उपयोगकर्ता आईडी के -uलिए उपयोग करता हूं , वास्तविक उपयोगकर्ता आईडी के लिए नहीं । अनुमतियाँ प्रभावी उपयोगकर्ता आईडी द्वारा निर्धारित की जाती हैं , वास्तविक नहीं ।-r
टेस्ट
/etc/passwd0दिए गए क्रम में उपयोगकर्ता आईडी के साथ निम्नलिखित उपयोगकर्ता नाम हैं :
rootx
root2
में लॉग इन किया root2, अगले परिणाम देता है:
whoami: rootx
echo $USER: root2(यदि खाली वातावरण में कार्यक्रम शुरू किया गया था, तो यह एक रिक्त स्ट्रिंग देता है, जैसे env -i sh -c 'echo $USER')
id -u: 0
जैसा कि आप देख सकते हैं, इस चेक में अन्य प्रोग्राम विफल हो गए, केवल id -uपास हुए।
अद्यतन स्क्रिप्ट इस तरह दिखाई देगी:
#!/bin/bash
if ! [ $(id -u) = 0 ]; then
echo "I am not root!"
exit 1
fi