Идентификатор пользователя

В Unix-подобных операционных системах пользователи идентифицируются идентификаторами пользователя (англ. User identifier, UID).

Операционная система различает пользователей именно по UID (а не, например, по логину). Во многих[сколько?] системах существует возможность создать две записи пользователя с разными логинами, но одинаковыми UID; в результате оба логина будут иметь одинаковые права, так как с точки зрения системы они неотличимы (так как имеют одинаковый UID). Это может использоваться злоумышленниками: проникнув в систему и получив права root, взломщик может создать себе аккаунт с UID=0, чтобы потом возвращаться в систему под логином, не привлекающим внимания, но получать права root.

Множество допустимых значений UID зависит от системы; в общем случае UID допускает использование значений от 0 до 65535 с некоторыми оговорками:

  • Суперпользователь всегда должен иметь UID, равный нулю (0).
  • Пользователю nobody обычно присваивается или наибольший из возможных UID (в противоположность суперпользователю), или один из системных UID (см. ниже).
  • UID с 1 по 100 по соглашению резервируются под системные нужды; некоторые руководства рекомендуют резервировать UID со 101 по 499 (в Red Hat) или даже 999 (в Debian).

Значение UID ставится в соответствие пользователю в файле /etc/passwd. Файлы теневого пароля и Network Information Service также используют числовые UID. Идентификатор пользователя-владельца является необходимым атрибутом файла файловых систем Unix и процессов.

Некоторые операционные системы могут поддерживать 16-битные UID, что делает возможным создание 65536 уникальных идентификаторов, хотя современные системы с поддержкой 32-битных UID могут иметь 4,294,967,296 (232) различных значений идентификаторов.

См. также править