В Unix-подобных системах несколько пользователей могут быть объединены в группы . Разрешения POSIX и обычной файловой системы Unix организованы в три класса: пользователь , группа и другие . Использование групп позволяет делегировать дополнительные возможности организованным образом, например, доступ к дискам, принтерам и другим периферийным устройствам . Этот метод, среди прочего, также позволяет суперпользователю делегировать некоторые административные задачи обычным пользователям, аналогично группе «Администраторы» в Microsoft Windows NT и ее производных.
Идентификатор группы , часто сокращенно GID , представляет собой числовое значение, используемое для представления определенной группы. [1] Диапазон значений для GID различается в разных системах; по крайней мере, GID может быть от 0 до 32 767, с одним ограничением: группа входа для суперпользователя должна иметь GID 0. Это числовое значение используется для ссылки на группы в файлах /etc/passwd
и /etc/group
или их эквивалентах. Файлы теневых паролей и Network Information Service также ссылаются на числовые 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, а затем зарегистрировать это статическое выделение в портах/GID. [2]
(gid_t) -1
зарезервировано POSIX для идентификации пропущенного аргумента. [3]Многие системные администраторы выделяют для каждого пользователя также персональную первичную группу, которая имеет то же имя, что и имя пользователя для входа, и часто также имеет тот же числовой GID, что и UID пользователя. Такие персональные группы не имеют других участников и упрощают совместную работу с другими пользователями в общих каталогах, позволяя пользователям привычно работать с umask 0002
. Таким образом, вновь созданные файлы могут иметь по умолчанию разрешения на запись, включенные для членов группы, поскольку это обычно включает доступ на запись только для членов персональной группы, то есть только для владельца файла. Однако, если файл создается в общем каталоге, который принадлежит другой группе и имеет установленный бит setgid , то созданный файл автоматически станет доступным для записи также и для членов группы этого каталога.
Во многих системах Linux USERGROUPS_ENAB
переменная in /etc/login.defs
управляет тем, будут ли команды типа useradd
или userdel
автоматически добавлять или удалять связанную персональную группу.