8.19. Серийное включение пользователей в группы

Проблема

Требуется добавить большое количество пользователей в группу.

Решение

Вставьте список имён прямо в файл /etc/group.

Далее описан быстрый способ построения списка пользователей для вставки в /etc/group. Он основан на схеме нумерации UID, позволяющей легко отсортировать нужную группу пользователей. Для примера воспользуемся схемой «Trainers/Coaches/Players», описанной в разделе 8.2. Добавим в группу Trainers несколько новых членов:

$ awk -F: '($3 >= 1050) && ($3 <= 1060) { print $1}' /etc/passwd | tr '\n' ','
bcool,bkind,fmow,kthxbye,oknodo

Теперь скопируйте и вставьте список в /etc/group.

Если в вашей системе нет аккуратной, чёткой схемы нумерации UID, воспользуйтесь данными GECOS. Выберите одно из полей для хранения метки. Поле «прочее» лучше всего подходит для этой цели, поскольку пользователи не могут изменять его по своему усмотрению. Это поле находится в данных GECOS — пяти полях, разделённых запятыми. Данные GECOS выглядят примерно так:

bcool:x:1300:1300:Bob Cool,trainer:/home/bcool:/bin/bash
bkind:x:1055:1055:Bev Kind,trainer:/home/bkind:/bin/bash

После добавления меток выборка пользователей легко производится при помощи grep и awk:

$ cat /etc/passwd | grep trainer | awk -F: '{ print $1}' | tr '\n' ','
bkind,bcool,

Этот метод помогает быстро отобрать нужных пользователей для включения в группу. После создания списка можно его вставить в файл /etc/group. Таким образом, вы легко сможете серийно добавить пользователей в нужные группы.

При необходимости, вы можете воспользоваться другими командами, например, для работы с множеством пользователей на основе различных меток, или создания сложных фильтров на основе других данных GECOS.

Также обратите внимание, что команда awk позволяет извлекать информацию не только на основе UID или GECOS, но и по другим критериям, например, по группе пользователей или домашней директории. Это значительно упрощает процесс управления большим количеством пользователей на сервере.

Кроме того, для автоматизации задач по добавлению пользователей в группы можно использовать скрипты. Пример простого скрипта на Shell, который позволит автоматизировать процесс добавления пользователей, может выглядеть так:

#!/bin/bash
group="trainers"
for user in $(cat users_list.txt); do
    usermod -aG $group $user
done

Этот скрипт возьмёт список пользователей из файла users_list.txt и добавит каждого пользователя в указанную группу.

Комментарий

Использование данных GECOS даёт возможность гибко управлять пользователями, сортировать их по различным критериям и организовывать группы более эффективно. Однако, при работе с системными файлами, такими как /etc/group и /etc/passwd, рекомендуется соблюдать осторожность и всегда создавать резервные копии перед внесением изменений.

См. также

passwd(5), awk(1).