एक रूट उपयोगकर्ता को "रूट" नाम देने की आवश्यकता नहीं है। whoami
उपयोगकर्ता आईडी के साथ पहला उपयोगकर्ता नाम लौटाता है 0
। $USER
उपयोगकर्ता में लॉग इन का नाम है, जिसमें उपयोगकर्ता आईडी हो सकती है 0
, लेकिन एक अलग नाम है।
यह जांचने के लिए एकमात्र विश्वसनीय कार्यक्रम है कि खाता रूट के रूप में लॉग इन है या नहीं:
id -u
मैं प्रभावी उपयोगकर्ता आईडी के -u
लिए उपयोग करता हूं , वास्तविक उपयोगकर्ता आईडी के लिए नहीं । अनुमतियाँ प्रभावी उपयोगकर्ता आईडी द्वारा निर्धारित की जाती हैं , वास्तविक नहीं ।-r
टेस्ट
/etc/passwd
0
दिए गए क्रम में उपयोगकर्ता आईडी के साथ निम्नलिखित उपयोगकर्ता नाम हैं :
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