Как обстоят дела со всеми различными UID, которые может иметь процесс? - PullRequest
36 голосов
/ 15 октября 2008

Реальный UID, эффективный UID, и некоторые системы даже имеют «сохраненный UID». Какова цель всего этого, особенно последнего?

Ответы [ 5 ]

51 голосов
/ 15 октября 2008

Каждый процесс UNIX имеет 3 UID, связанных с ним. Привилегия суперпользователя - UID = 0.

Реальный UID

Это UID пользователя / процесса, который создал ЭТОТ процесс. Его можно изменить, только если запущенный процесс имеет EUID = 0.

Эффективный UID

Этот UID используется для оценки привилегий процесса для выполнения определенного действия. EUID может быть изменен либо на RUID, либо на SUID, если EUID! = 0. Если EUID = 0, его можно изменить на что угодно.

Сохраненный UID

Если вы запустите исполняемый файл с установленным битом set-UID, то итоговый процесс запуска начнется с реального UID реального пользователя, который его запускает, и с эффективным и сохраненным UID владельца исполняемого файла. Если процесс затем вызывает setuid () или seteuid (), чтобы изменить свой эффективный UID, они все равно могут снова получить свои первоначальные привилегии благодаря сохраненному UID. Если бит set-UID не установлен, SUID будет RUID.

6 голосов
/ 15 октября 2008

Настоящий uid - это идентификатор пользователя, запустившего процесс.

Эффективный uid обычно совпадает с реальным uid. Это отличается только если:

  • исполняемый файл имеет установленный бит set-uid, и владелец исполняемого файла отличается от пользователя, вызывающего его

  • или если процесс set-uid вызывает setuid (2). Если процесс имеет привилегии суперпользователя, любой аргумент для setuid (2) разрешен (но тогда все * -uids будут установлены на одно и то же значение); в противном случае setuid (2) может быть вызван с помощью действительного-идентификатора, эффективного-идентификатора или сохраненного идентификатора.

Сохраненный uid - это эффективный uid, который был у процесса при его запуске, и он сохраняется, чтобы быть разрешенным в качестве аргумента для различных системных * uid системных вызовов.

Обратите внимание, что процесс с привилегией суперпользователя, вызывающий setuid (2) для изменения своего эффективного uid, также будет иметь действительный uid и сохраненный uid, измененные на одно и то же значение, поэтому вместо него следует использовать не-POSIX seteuid (2). 1017 *

Все вышеперечисленное относится и к (реальным | эффективным | сохраненным) групповым идентификаторам.

4 голосов
/ 20 октября 2008

В дополнение к реальным, эффективным и сохраненным идентификаторам UID системы Unix с включенным аудитом также имеют идентификаторы аудита. AUID процесса идентифицирует пользователя, который запустил процесс; он не изменяется setuid (2) или seteuid (2). Намерение состоит в том, чтобы оно оставалось постоянным в течение всего процесса и использовалось только для пометки записей аудита. Таким образом, если пользователь запускает привилегированную оболочку (даже авторизованного пользователя с помощью su или sudo), записи аудита этого процесса помечаются этим пользователем.

1 голос
/ 12 июля 2014

Каждый процесс Linux имеет 3 UID, связанных с ним.

  • Реальный UID : UID процесса, который создал ЭТОТ процесс.
  • Эффективный UID : используется для оценки привилегий процесса для выполнения определенного действия.
  • Сохраненный UID : для двоичного файла изображения с битом setuid.
0 голосов
/ 24 февраля 2016

Принятый ответ неверен в отношении того, что реальные UD не могут быть изменены кем-либо, кроме root. Со страницы руководства для setuid: (Я не мог сделать комментарий)

Функция setuid () устанавливает действительные и эффективные идентификаторы пользователя и сохраненный идентификатор пользователя текущий процесс с указанным значением. Функция setuid () разрешена, если эффективный идентификатор пользователя является идентификатором суперпользователя, или если указанный идентификатор пользователя совпадает с эффективный идентификатор пользователя. Если нет, но указанный идентификатор пользователя совпадает с реальным пользователем ID, setuid () установит действительный идентификатор пользователя в реальный идентификатор пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...