setuid против функции seteuid

В чем разница между функцией setuid и seteuid. На странице руководства обе функции имеют одинаковое описание.

setuid:

DESCRIPTION

   setuid()  sets  the  effective user ID of the calling process.  If the effective UID of the caller is root, the real UID and saved
   set-user-ID are also set.

seteuid:

DESCRIPTION

   seteuid()  sets  the  effective user ID of the calling process.  Unprivileged user processes may only set the effective user ID to
   the real user ID, the effective user ID or the saved set-user-ID.

В обоих описаниях содержится sets the effective user ID of the calling process. Итак, в чем разница между этими двумя функциями и чем отличается функциональность между этими функциями.

И еще одно сомнение в том, что с помощью chmod (chmod u + s) только мы можем установить для файла разрешение установленного идентификатора пользователя. Тогда только во время выполнения программы у процесса есть разрешение на установку идентификатора пользователя. Кроме того, как эти функции устанавливают эффективный идентификатор пользователя для процесса.


person mohangraj    schedule 12.10.2015    source источник
comment
Возможный дубликат Различия между функцией setuid и seteuid   -  person Snorex    schedule 26.01.2017
comment
Похож на ваш другой пост того же дня. Чтобы навести порядок, может быть, отредактируйте позже опубликованный вопрос, включив в него информацию выше, а затем удалите этот?   -  person Snorex    schedule 26.01.2017


Ответы (2)


На странице руководства:

   Thus, a set-user-ID-root program wishing to temporarily drop root
   privileges, assume the identity of an unprivileged user, and then
   regain root privileges afterward cannot use setuid().  You can
   accomplish this with seteuid(2).
person user3159253    schedule 12.10.2015
comment
Какая необходимость. зачем корню нужна личность непривилегированного пользователя. У вас есть какой-нибудь пример? - person mohangraj; 12.10.2015
comment
Что ж, один из возможных примеров - когда процессу нужны некоторые привилегированные ресурсы (например, 80-порт для HTTP-сервера), но после того, как процесс собрал этот ресурс, больше нет никакой необходимости запускать как root (так что вы можете проверить, запускается ли веб-сервер Apache как непривилегированный пользователь, например _http или _apache). Обычно такая мера используется в качестве меры безопасности: возможный выход из строя непривилегированного сервера обычно приводит к менее опасным последствиям. - person user3159253; 12.10.2015
comment
Я сомневаюсь в приведенной выше ссылке на справочную страницу. Используя setuid, мы можем установить эффективный идентификатор пользователя процесса. Например: setuid (getuid ()); После выполнения этого оператора эффективный идентификатор пользователя процесса изменяется на текущего пользователя. Итак, чтобы восстановить права root, я просто использую setuid (0); Но почему ссылка на страницу руководства показывает afterward cannot use setuid(). You can accomplish this with seteuid(2). - person mohangraj; 12.10.2015

В ответ на вопрос «зачем использовать seteuid ()»: некоторые системные приложения используют seteuid (), чтобы они могли пытаться выполнять инструкции с привилегиями «эффективного» пользователя. Это позволяет программе, работающей от имени root, гарантировать, что, например, любые файлы, которые она создает, создаются с использованием эффективного идентификатора пользователя, а не идентификатора root.

Возможно, наиболее заметным приложением является система «cron» Unix, которая должна запускаться от имени пользователя «root», но отвечает за выполнение произвольных команд от имени произвольных пользователей.

person I Steele    schedule 24.08.2017
comment
Так является ли эта теория мер предосторожности ложной? - person Sajuuk; 15.07.2019