Колись, це в коді. Наприклад, посередині 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."));
[...]
що змінить поведінку програми, якщо ви root або ні.
У більшості інших випадків це неявно; делеговане ядро. Наприклад, якщо програма викликає системний виклик, який дозволяє перезавантажувати систему, вона буде працювати лише у тому випадку, якщо ви користуєтесь root. Якщо ви не root, ви отримаєте помилку "відмовлено у дозволі", що програма (якщо вона добре написана) просто повідомляє вам. Або ви намагаєтесь видалити файл; якщо у вас є правильний дозвіл на файл, щоб це зробити, це буде успішно; якщо ні, то це залежить від того, ви root або ні --- коли rm
дзвінки unlink()
ядро перевірятиме дозволи.
Отже, ні, в принципі ви не можете сказати, просто дивлячись на дозвіл виконуваного файлу, якщо програма вимагає привілеїв root чи ні. Дуже багато програм потребуватимуть їх лише для деякої операції, тому зробити щось подібне буде дуже важко. Випадок hwclock
один (будь-хто може прочитати годинник , але тільки корінь може встановити його), але є сотні з них ( kill
, rm
, cat
...)
Потім є пов'язаний і цікавий світ налаштованих програм ...
/bin
або/sbin
. Проблема полягає в тому, що деякі з цих програм працюють різні, залежно від того, який користувач їх виконує.