8.2. Отделение обычных пользователей от системных

В любой системе Linux, наряду с учетными записями обычных пользователей,
существуют системные учетные записи (root, uucp, daemon и т. д.). В файле /etc/
passwd эти две категории не отделяются друг от друга. Как отделить учетные за писи «живых» пользователей от системных учетных записей?
Решение
Воспользуйтесь схемой нумерации идентификаторов пользователей в Linux (UID)
и возможностью сортировки по полям или столбцам в awk. Пример для системы
на базе Debian или Slackware:
$ awk -F: '$3 > 999 { print $0}' /etc/passwd
nobody:x:65534:65534:nobody:/nonexi stent:/bi n/sh
carl a:x:1000:1000::/home/carl a:/bin/bash
foober:x:1001:1001::/home/test:/bi n/false
bitchkat:x:1002:1002::/home/test2/:bin/bash
Colby:x:1003:1003::/home/test3:/bin/bash
Отображение подмножества записей:
$ awk -F: '($3 >- 1000) && ($3 <= 1005) { print $0}' /etc/passwd
Для систем Red Hat и SuSE:
* awk -F: '$3 > 499 { print $0}' /etc/passwd
Алфавитная сортировка результата:
$ awk -F: '$3 > 499 { print $0}' /etc/passwd | sort
Описанный прием особенно удобен тогда, когда схему нумерации UID в груп пах удается спроектировать заранее. Например:
О Trainers 1000-1100;
О Coaches 1101-1200;
О Players 1200-2000.
Если вы будете придерживаться подобной схемы, в вашем распоряжении по явится простой инструмент для сортировки пользователей и их последующего
разбиения на группы.
Комментарий
Схемы нумерации (вроде представленного ранее примера «Trainers/Coaches/
Players») хорошо подходят для небольшой и относительно статичной пользователь ской базы. В больших организациях с частыми изменениями они приносят боль ше вреда, чем пользы. В таких ситуациях лучше направить усилия на правильное
распределение пользователей по группам и своевременное внесение изменений.
Как всегда, между дистрибутивами существуют мелкие, но любопытные раз личия.
Коды UID и GID во всех версиях Linux лежат в интервале от 0 до 65534.
Debian:
о 0-99 — системные учетные записи;
О 100-999 — установленные пользователем программы и демоны (Postfix, Fetchmail,
gdm, dictd и т. д.);
О 1000-29999 — учетные записи обычных пользователей;
О 30000-65533 — согласно документации Debian, коды зарезервированы, но при
желании вы можете их использовать;
О 65534 — пользователь nobody, учетная запись без прав и разрешений.
Red Hat:
О 0-499 — коды зарезервированы для системного использования;
О 500-60000 — обычные пользователи;
О 65534 — пользователь nobody, учетная запись без прав и разрешений.
В других дистрибутивах используются аналогичные схемы нумерации. Экс периментируйте с диапазонами, зарезервированными для учетных записей обыч ных пользователей, но не трогайте системные диапазоны.
См. также
awk(l); раздел 8.17; Debian Policy Manual, глава 9.2.2 (http://www.debian.org/doc/
debian-poLicy/); Red Hat Linux Reference Pocket Guide (http://www.redhat.com/docs/
manuals/Linux/).