บางครั้งมันอยู่ในรหัส ตัวอย่างเช่นคุณอยู่ตรงกลางของhwclock.c
:
if (getuid() == 0)
permitted = TRUE;
else {
/* program is designed to run setuid (in some situations) */
if (set || systohc || adjust) {
warnx(_("Sorry, only the superuser can change "
"the Hardware Clock."));
[...]
ซึ่งจะเปลี่ยนพฤติกรรมของโปรแกรมถ้าคุณรูทหรือไม่
ในกรณีอื่น ๆ ส่วนใหญ่มันเป็นนัย มอบหมายให้เคอร์เนล ตัวอย่างเช่นหากโปรแกรมเรียกการเรียกของระบบที่ให้คุณรีบูตระบบมันจะทำงานเฉพาะในกรณีที่คุณเป็นรูท หากคุณไม่ใช่รูทคุณจะพบข้อผิดพลาด "สิทธิ์ถูกปฏิเสธ" ที่แอปพลิเคชัน (ถ้าเขียนได้ดี) เพียงรายงานให้คุณทราบ หรือคุณกำลังพยายามลบไฟล์ หากคุณมีสิทธิ์ที่ถูกต้องในไฟล์ที่จะทำมันก็จะประสบความสำเร็จ; ถ้าไม่ขึ้นอยู่กับว่าคุณรูทหรือไม่ --- เมื่อrm
โทรunlink()
เคอร์เนลจะตรวจสอบการอนุญาต
ดังนั้นโดยหลักการแล้วคุณไม่สามารถพูดได้เพียงแค่ดูที่สิทธิ์ของโปรแกรมที่สามารถเรียกใช้งานได้หากโปรแกรมนั้นต้องการสิทธิ์รูทหรือไม่ โปรแกรมจำนวนมากจะต้องใช้สำหรับการดำเนินการบางอย่างเท่านั้นดังนั้นจึงเป็นการยากที่จะทำสิ่งนั้น กรณีที่hwclock
เป็นหนึ่ง (ทุกคนสามารถอ่านนาฬิกา แต่รากเท่านั้นที่สามารถตั้งค่า) แต่มีหลายร้อยของพวกเขา ( kill
, rm
, cat
... )
จากนั้นมีโลกที่เกี่ยวข้องและน่าสนใจของโปรแกรม setuid ...
/bin
หรือ/sbin
ไดเรกทอรี ปัญหาคือว่าบางโปรแกรมกำลังทำงานแตกต่างกันขึ้นอยู่กับผู้ใช้ที่เรียกใช้พวกเขา