UID — уникальный идентификатор¶
UID (англ. User Identifier, «идентификатор пользователя») — уникальный числовой или буквенно-цифровой код, назначаемый пользователю, процессу, файлу или объекту в информационной системе для однозначной его идентификации. В операционных системах семейства UNIX и Linux UID — это численный идентификатор владельца файла или процесса, определяющий права доступа. В программировании и базах данных UID применяется как первичный ключ или внешний ключ для ссылок между объектами. В России аналогом UID часто выступает ИНН, СНИЛС и иные персональные идентификаторы, применяемые в государственных информационных системах.
¶UID в операционных системах UNIX и Linux
В UNIX-системах каждый пользователь при создании получает уникальное числовое значение — UID. Сопоставление имён пользователей и их UID хранится в файле /etc/passwd. Суперпользователь (root) имеет UID 0. Стандартные системные пользователи (демоны) в большинстве дистрибутивов Linux получают UID в диапазоне от 1 до 999, обычные (интерактивные) пользователи — от 1000 и выше (в некоторых системах от 500).
UID тесно связан с GID (Group Identifier) — идентификатором группы пользователя. Права доступа к файлам и каталогам определяются тройкой «владелец — группа — остальные», где для владельца и группы используются UID и GID соответственно. При обращении к файлу ядро сравнивает UID текущего процесса с UID владельца файла и на основании этого решает, разрешить или запретить операцию.
Команда id выводит UID текущего пользователя, whoami — имя, соответствующее текущему UID, su и sudo позволяют переключаться на учётную запись с другим UID. Смена UID существующего пользователя выполняется утилитой usermod -u.
¶UID в базах данных и программировании
В реляционных базах данных UID часто используется как первичный ключ таблицы — уникальное значение, однозначно определяющее строку. В отличие от естественных ключей (например, номер паспорта или ИНН), UID обычно генерируется автоматически и не несёт смысловой нагрузки, что позволяет избежать проблем при изменении атрибутов объекта.
Популярные схемы генерации UID:
- UUID / GUID (Universally Unique Identifier) — 128-битное число, представленное в виде строки из 32 шестнадцатеричных цифр (например,
550e8400-e29b-41d4-a716-446655440000). Вероятность коллизии пренебрежимо мала, поэтому UUID может генерироваться независимо на разных узлах распределённой системы без центрального координатора. - Суррогатные ключи — последовательные целые числа (auto-increment), простые и эффективные, но раскрывающие количество записей и уязвимые при объединении таблиц из нескольких источников.
- Составные ключи — комбинация нескольких полей, не являющаяся единым UID в строгом смысле.
В объектно-ориентированных языках (Java, C#, Python) для генерации UID применяются стандартные библиотеки: java.util.UUID, System.Guid, модуль uuid в Python.
¶UID в мобильных и веб-системах
Мобильные операционные системы присваивают каждому устройству или установке приложения собственный идентификатор. В iOS долгое время использовался UDID (Unique Device Identifier), после чего Apple заменила его на IDFV (Identifier for Vendors) и IDFV/IDFA для рекламных целей. В Android аналогом выступает Android ID, а также рекламный идентификатор Google Advertising ID. Эти идентификаторы используются для аналитики, персонализации рекламы и антифрод-систем, что неоднократно становилось предметом правовых споров о защите персональных данных.
В веб-разработке UID применяется в cookie, системах идентификации сессий, а также в DOM — атрибут id HTML-элемента должен быть уникален на странице и служит целью для ссылок, скриптов и стилей.
¶UID в государственных системах России
В России понятие «идентификатор» активно используется в государственных информационных системах. Единый идентификатор записи акта гражданского состояния (ЕЗАГС) — цифровой код, присваиваемый каждой записи о рождении, браке или смерти. В системе МИР (Многофункциональная информационная распределённая система) используется идентификатор, связывающий учётные записи различных ведомств. В Единой библиотечной системе и системе ЕАИС «Электронный бюджет» применяются собственные UID объектов.
Физическим лицам в России соответствуют ИНН (для налоговой отчётности), СНИЛС (для пенсионного и социального учёта) и полис ОМС. Каждый из этих номеров выполняет функцию уникального идентификатора в своей предметной области.
¶Принципы построения UID
Надёжный идентификатор должен удовлетворять ряду требований:
- Уникальность — два разных объекта не должны иметь одинаковый UID.
- Постоянство — UID не должен меняться в течение жизненного цикла объекта.
- Неизменяемость — значение не должно зависеть от атрибутов объекта (адрес, имя), которые могут измениться.
- Неинформативность — желательно, чтобы UID не раскрывал лишнюю информацию о объекте (дату создания, принадлежность к организации).
Нарушение этих принципов приводит к коллизиям, необходимости переписывать ссылки при изменении ключа и другим проблемам проектирования информационных систем.
Источники:
- Таненбаум Э. Современные операционные системы. — СПб.: Питер, 2015.
- Гарсия-Молина Х., Ульман Дж., Видом Д. Системы баз данных. Полное пособие. — М.: Вильямс, 2013.
- RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace.
- Справочные материалы по Linux-системам (man-страницы id, passwd, usermod).
