Введение
Номер группы учетных записей Unix/POSIX; числовое значение, используемое для представления конкретной группы.
В системах, подобных Unix, несколько пользователей могут быть объединены в группы. Разрешения файловой системы POSIX и традиционных Unix-систем организованы в три класса: пользователь, группа и остальные. Использование групп позволяет организованно делегировать дополнительные возможности, такие как доступ к дискам, принтерам и другим периферийным устройствам. Этот метод, среди прочих, также позволяет суперпользователю делегировать некоторые административные задачи обычным пользователям, подобно группе Администраторов в Microsoft Windows NT и её производных. Идентификатор группы, часто сокращаемый до GID, – это числовое значение, используемое для представления конкретной группы. Диапазон значений GID различается в зависимости от системы; как минимум, GID может быть от 0 до 32 767, при этом действует одно ограничение: группа входа для суперпользователя должна иметь GID 0. Это числовое значение используется для обращения к группам в файлах /etc/passwd и /etc/group или их аналогах. Теневые файлы паролей и Сетевая информационная служба также используют числовые GID. Идентификатор группы является необходимым компонентом файловых систем и процессов Unix.
Дополнительные группы
В системах Unix каждый пользователь должен состоять как минимум в одной группе, первичной группе, которая идентифицируется числовым GID записи пользователя в базе данных passwd, которую можно просмотреть с помощью команды getent passwd (обычно хранится в /etc/passwd или LDAP). Эта группа называется идентификатором первичной группы. Пользователь может быть указан как член дополнительных групп в соответствующих записях в базе данных групп, которую можно просмотреть с помощью getent group (обычно хранится в /etc/group или LDAP); идентификаторы этих групп называются дополнительными идентификаторами групп.
Эффективный против реального
Процессы Unix имеют эффективный (EUID, EGID), реальный (UID, GID) и сохраненный (SUID, SGID) идентификатор. Обычно эти идентификаторы совпадают, но в процессах с установленными битами setuid и setgid они различаются.
Тип
Первоначально использовалось знаковое 16-битное целое число. Поскольку отрицательные значения не имеют смысла для идентификаторов групп, теперь вместо этого используется беззнаковое целое число, позволяющее использовать идентификаторы групп в диапазоне от 0 до 65 535. Современные операционные системы обычно используют беззнаковые 32-битные целые числа, которые позволяют использовать идентификаторы групп в диапазоне от 0 до 4 294 967 295.
Запрещенные диапазоны
Многие системы Linux резервируют диапазон GID от 0 до 99 для статических групп, а также 100–499 или 100–999 для групп, динамически выделяемых системой в скриптах после установки. Эти диапазоны часто указываются в файле /etc/login.defs для инструментов useradd, groupadd и аналогичных. В FreeBSD разработчики, которым требуется GID для своего пакета, могут выбрать свободный из диапазона от 50 до 999 и затем зарегистрировать это статическое выделение в ports/GIDs.
Особые значения
0: Суперпользователь обычно имеет GID равный нулю (0). -1: Значение (gid t) 1 зарезервировано POSIX для обозначения пропущенного аргумента. 65534: Ядро Linux по умолчанию использует значение 216−2 = 65534 (которое во многих дистрибутивах Linux сопоставляется с именем группы "nogroup"), когда 32-битный GID не помещается в возвращаемое значение 16-битного системного вызова. Это значение также возвращается idmapd, если имя группы во входящем пакете NFSv4 не соответствует ни одной известной группе в системе.
Личные группы
Многие системные администраторы выделяют каждому пользователю также личную первичную группу, имя которой совпадает с именем входа пользователя, и часто с тем же числовым GID, что и UID пользователя. Такие личные группы не имеют других участников и упрощают совместную работу с другими пользователями в общих каталогах, позволяя пользователям привычно работать с umask 0002. Это позволяет вновь созданным файлам по умолчанию иметь разрешения на запись для членов группы, поскольку это обычно обеспечивает доступ на запись только для членов личной группы, то есть только для владельца файла. Однако, если файл создается в общем каталоге, принадлежащем другой группе и имеющем установленный бит setgid, то созданный файл автоматически станет доступным для записи членам группы этого каталога. На многих системах Linux переменная USERGROUPS_ENAB в файле /etc/login.defs определяет, автоматически ли команды, такие как useradd или userdel, добавляют или удаляют связанную личную группу.