ผู้ใช้รูทไม่จำเป็นต้องตั้งชื่อ "root" ผลตอบแทนที่ได้ชื่อผู้ใช้ครั้งแรกกับรหัสผู้ใช้whoami มีชื่อของผู้ใช้ที่ล็อกอินซึ่งสามารถมี ID ผู้ใช้แต่มีชื่ออื่น0$USER0
โปรแกรมเดียวที่เชื่อถือได้เพื่อตรวจสอบว่าบัญชีนั้นเข้าสู่ระบบในฐานะรูทหรือไม่:
id -u
ฉันใช้-uสำหรับรหัสผู้ใช้ที่มีประสิทธิภาพไม่ใช่-rสำหรับID ผู้ใช้จริง สิทธิ์ที่กำหนดโดยมีประสิทธิภาพ ID ผู้ใช้ไม่ได้จริงอย่างใดอย่างหนึ่ง
การทดสอบ
/etc/passwdมีชื่อผู้ใช้ต่อไปนี้พร้อม ID ผู้ใช้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