Đôi khi, đó là trong mã. Ví dụ: giữa chừng hwclock.c
, bạn sẽ tìm thấy:
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."));
[...]
sẽ thay đổi hành vi của chương trình nếu bạn root hoặc không.
Trong hầu hết các trường hợp khác, nó ẩn; ủy thác cho kernel. Ví dụ, nếu chương trình gọi cuộc gọi hệ thống cho phép bạn khởi động lại hệ thống, nó sẽ chỉ hoạt động nếu bạn đã root. Nếu bạn không root, bạn sẽ gặp lỗi "quyền bị từ chối" mà ứng dụng (nếu được viết tốt) chỉ đơn giản là báo cáo cho bạn. Hoặc bạn đang cố xóa một tập tin; nếu bạn có quyền trên tệp để làm điều đó, nó sẽ thành công; nếu không, nó phụ thuộc vào việc bạn có root hay không --- khi rm
gọi unlink()
kernel sẽ kiểm tra quyền.
Vì vậy, về nguyên tắc, bạn không thể nói chỉ nhìn vào sự cho phép của tệp thực thi nếu chương trình có yêu cầu quyền root hay không. Rất nhiều chương trình sẽ yêu cầu chúng chỉ cho một số hoạt động, vì vậy sẽ rất khó để làm một cái gì đó như thế. Trường hợp của hwclock
một (ai cũng có thể đọc đồng hồ nhưng chỉ root có thể thiết lập nó), nhưng có hàng trăm trong số họ ( kill
, rm
, cat
...)
Sau đó là thế giới liên quan và thú vị của các chương trình setuid ...
/bin
hoặc/sbin
thư mục. Vấn đề là một số chương trình đang chạy khác nhau tùy thuộc vào người dùng nào chạy chúng.