Иногда это в коде. Например, на полпути 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
...)
Тогда есть связанный и интересный мир программ setuid ...
/bin
или/sbin
каталоги. Проблема в том, что некоторые из этих программ работают по-разному в зависимости от того, какой пользователь их запускает.