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