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

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

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

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

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

10
задан 25 September 2014 в 11:42

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."));
[...]

который изменит поведение программы, если Вы будете корнем или нет.

В большинстве других случаев это неявно; делегированный к ядру. Например, если программа назовет системный вызов, которые позволяют Вам перезагрузить систему, то это будет работать, только если Вы - корень. Если Вы не будете корнем, то у Вас будет "разрешение отклоненным" ошибка, о которой приложение (если правильно написанный) просто сообщит Вам. Или Вы пытаетесь удалить файл; если у Вас будет правильное разрешение на файле, чтобы сделать это, то это успешно выполнится; в противном случае это зависит, если Вы - корень или не---когда rm вызовы unlink() ядро проверит полномочия.

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

Затем существует связанный и интересный мир setuid программ...

12
ответ дан 16 November 2019 в 15:37

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

Похожие вопросы: