Группа это просто список пользователей. Группа идентифицируется по имени и GID (Group
ID, идентификатор группы). В FreeBSD (и большинстве других UNIX®-подобных системах) ядро для определения прав процесса
использует два фактора: его ID пользователя и список групп, которым он принадлежит. Когда
вы слышите что-то о ``group ID'' пользователя или процесса, это обычно означает только
первую группу из списка.
Имена групп связываются с ID групп в файле /etc/group. Это
текстовый файл с четырьмя разделенными двоеточием полями. Первое поле это имя группы,
второе это зашифрованный пароль, третье это ID группы, а четвертое это разделенный
запятыми список членов группы. Этот файл может быть безопасно отредактирован вручную
(предполагается, конечно, что вы не сделаете синтаксических ошибок!). За более полным
описанием синтаксиса обратитесь к странице справочника group(5).
Если вы не хотите редактировать /etc/group вручную,
используйте команду pw(8) для добавления и
редактирования групп. Например, для добавления группы, называемой teamtwo, и проверки ее существования вы можете использовать:
Пример 13-8. Добавление группы с использованием pw(8)
# pw groupadd teamtwo
# pw groupshow teamtwo
teamtwo:*:1100:
Число 1100 это ID группы teamtwo. На данный момент в, teamtwo
нет членов, и поэтому она практически бесполезна. Давайте изменим эту ситуацию, добавив
jru в группу teamtwo.
Пример 13-9. Добавление пользователя в группу с использованием pw(8)
# pw groupmod teamtwo -M jru
# pw groupshow teamtwo
teamtwo:*:1100:jru
Аргумент к параметру -M это разделенный запятыми список
пользователей, являющихся членами группы. Из предыдущих разделов мы знаем, что файл
паролей также указывает группу для каждого пользователя. Пользователь автоматически
добавляется системой к списку групп; пользователь не будет показан как член группы при
использовании pw(8) groupshow, но эта информация будет показана при использовании id(1) или похожего
инструмента. Другими словами, с этим параметром программа pw(8) работает только
с файлом /etc/group; она никогда не будет пытаться получить
дополнительную информацию из файла /etc/passwd.
Пример 13-10. Использование id(1) для определения принадлежности к
группам
% id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)
Как вы можете видеть, jru является членом групп jru и teamtwo.
За дальнейшей информацией о pw(8), обратитесь к ее
странице справочника, а за дополнительной информацией о формате файла /etc/group к странице справочника group(5).