Введение
Значение, идентифицирующее учетную запись пользователя в Unix и Unix-подобных операционных системах. Unix-подобные операционные системы идентифицируют пользователя по значению, называемому идентификатором пользователя, часто сокращенно UID. UID, наряду с идентификатором группы (GID) и другими критериями контроля доступа, используется для определения системных ресурсов, к которым пользователь имеет доступ. Файл паролей сопоставляет текстовые имена пользователей с UID. UID хранятся в inode файловой системы Unix, в работающих процессах, в tar-архивах и в устаревшей службе Network Information Service. В средах, соответствующих стандарту POSIX, команда `id` в оболочке предоставляет UID текущего пользователя, а также дополнительную информацию, такую как имя пользователя, основная группа пользователя и идентификатор группы (GID).
Unix like operating systems identify a user by a value called a user identifier, often abbreviated to user ID or UID. The UID, along with the group identifier (GID) and other access control criteria, is used to determine which system resources a user can access. The password file maps textual user names to UIDs. UIDs are stored in the inodes of the Unix file system, running processes, tar archives, and the now obsolete Network Information Service. In POSIX compliant environments, the shell command id gives the current user's UID, as well as more information such as the user name, primary user group and group identifier (GID).
Действительный идентификатор пользователя
Эффективный UID (euid) процесса используется для большинства проверок доступа. Он также используется в качестве владельца для файлов, создаваемых этим процессом. Эффективный GID (egid) процесса также влияет на контроль доступа и может влиять на создание файлов, в зависимости от семантики конкретной реализации ядра и, возможно, опций монтирования. В соответствии с семантикой BSD Unix, групповая принадлежность вновь созданного файла безусловно наследуется от групповой принадлежности каталога, в котором он создан. В соответствии с семантикой AT&T UNIX System V (которая также используется в различных вариантах Linux), вновь созданному файлу обычно присваивается групповая принадлежность, указанная egid процесса, создающего файл. Большинство файловых систем предоставляют способ выбора между семантикой BSD и AT&T в отношении групповой принадлежности вновь созданного файла; семантика BSD выбирается для конкретных каталогов, когда установлен бит разрешения S ISGID (s gid).
Идентификатор пользователя файловой системы
Linux также имеет идентификатор пользователя файловой системы (fsuid), который используется для явного контроля доступа к файловой системе. Он совпадает с euid, если не задано иное значение. Он может быть идентификатором пользователя root только в том случае, если ruid, suid или euid равны root. При каждом изменении euid это изменение распространяется и на fsuid. Назначение fsuid заключается в том, чтобы позволить программам (например, серверу NFS) ограничить свои права в файловой системе правами определенного uid, не предоставляя этому uid возможность отправлять им сигналы. Начиная с ядра 2.0, наличие fsuid больше не требуется, поскольку Linux следует правилам SUSv3 для отправки сигналов, однако fsuid сохраняется для обеспечения обратной совместимости.
Зарегистрированный идентификатор пользователя
Сохраненный идентификатор пользователя используется, когда программе, работающей с повышенными привилегиями, необходимо временно выполнить задачу без повышенных привилегий. Изменение euid с привилегированного значения (обычно 0) на непривилегированное значение (любое значение, отличное от привилегированного) приводит к сохранению привилегированного значения в suid. Впоследствии euid программы может быть восстановлен до значения, хранящегося в suid, чтобы восстановить повышенные привилегии. Непривилегированный процесс может установить свой euid только на одно из трех значений: значение ruid, значение suid или значение euid.
Идентификатор реального пользователя
Реальный UID (ruid) и реальный GID (rgid) идентифицируют реального владельца процесса и влияют на разрешения для отправки сигналов. Процесс без привилегий суперпользователя может отправить сигнал другому процессу только если ruid или euid отправителя совпадают с ruid или suid получателя. Поскольку дочерний процесс наследует свои учетные данные от родительского, дочерний и родительский процессы могут сигнализировать друг другу.
Тип
POSIX требует, чтобы UID был целым числовым типом. Большинство Unix-подобных операционных систем представляют UID как беззнаковое целое число. Размер значений UID различается в зависимости от системы; некоторые UNIX-системы использовали 15-битные значения, позволяя значения до 32767, в то время как другие, такие как Linux (до версии 2.4), поддерживали 16-битные UID, что обеспечивало 65536 уникальных идентификаторов. Большинство современных Unix-подобных систем (например, Solaris 2.0 в 1990 году, Linux 2.4 в 2001 году) перешли на 32-битные UID, что позволяет использовать 4 294 967 296 (2 в 32-й степени) уникальных идентификаторов.