Как узнать, требует ли выполнение программы рута?

Я понимаю, что это немного фундаментальный и, возможно, глупый вопрос, но я не смог найти ответ.

Я понимаю, что каждый файл имеет "Executable" немного.

Я предполагал, что программы, которые требуют root, которые принадлежат root пользователь и root группа не будет иметь Executable немного для Other и это помешало бы пользователям без полномочий root выполнять их. Но в /bin а также /sbin каталоги я вижу, что все файлы имеют разрешения, такие как -rwxr-xr-x

Так что же на самом деле определяет, нужно ли пользователю иметь права root для выполнения чего-либо?

1 ответ

Решение

Когда-нибудь это в коде. Например, на полпути 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() ядро проверит разрешения.

Так что нет, в принципе вы не можете сказать, просто глядя на разрешение исполняемого файла, если программе требуются права суперпользователя или нет. Многие программы потребуют их только для какой-то операции, поэтому будет очень сложно сделать что-то подобное. Случай hwclock один (любой может читать часы, но только root может их установить), но их сотни (kill, rm, cat...)

Тогда есть связанный и интересный мир программ setuid...

Другие вопросы по тегам