Назад | Перейти на главную страницу

Получить список пользователей в группе во FreeBSD

Как получить список имен пользователей, назначенных группе в FreeBSD 11.1?

Этот вопрос запрашивает список пользователей или список групп.

Этот вопрос запрашивает пользователей, которые являются членами нескольких определенных групп.

➥ Но как просто запросить список пользователей, которые в настоящее время относятся к одной конкретной группе, например wheel?

Если возможно, я предпочитаю решение в одной команде. Но если это невозможно, сценарий был бы полезным и познавательным.

Вы можете выбрать пользователей с определенной группой из списка всех пользователей, предоставленных pw утилита:

pw usershow -P -a | grep groupname

Результат будет примерно таким:

Login Name: username1     #1024         Group: groupname          #1002
Login Name: username2     #1025         Group: groupname          #1002

Не обращая внимания на системные скрипты вроде getent, пользователи могут быть в группе двумя способами: либо это их основная группа, определенная в / etc / passwd, либо они имеют ее как вторичную группу в / etc / groups.

GROUPID=1000
sed -rn "s/^[^:]*:[^:]*:$GROUPID://p" < /etc/group | tr ',' '\n'
sed -rn "s/^([^:]*):[^:]*:[^:]*:$GROUPID:.*/\\1/p" < /etc/passwd

Должен сделать это красиво. awk наверное выглядело бы лучше ...

GROUPID=1000
awk -F: -v "g=$GROUPID" '{if ($3==g) print $1;}' /etc/passwd
awk -F: -v "g=$GROUPID" '{if ($3==g) print $4;}' /etc/group | tr ',' '\n'

https://www.cyberciti.biz/faq/linux-list-all-members-of-a-group/ thread показать несколько способов сделать это. Я лично предпочитаю метод участников. но приведенный ниже метод является родным и хорошо работает.

$ grep 'grpup-name-here' /etc/group
$ grep 'ftponly' /etc/group
$ grep -i --color 'ftponly' /etc/group

Правильный способ показать всех пользователей в определенной группе во FreeBSD:

# pw groupshow groupname