группа списка зарегистрированных пользователей

Я знаю, что вижу список зарегистрированных пользователей, с who команда. Но позволяет, говорят, я хочу видеть, кто в моей группе зарегистрирован. Как я могу сделать это?

3
задан 27 January 2016 в 20:53

1 ответ

Имена пользователей, содержащие пробелы, не позволяются по умолчанию на Ubuntu, таким образом, этот метод должен быть устойчивым:

who | cut -d ' ' -f 1 | while read user; do for gid in $(id -G "$user"); do [ $gid -eq $(id -g) ] && printf '%s\n' "$user" && break; done; done | sort -u
  • who: печатает список, в настоящее время входил в систему пользователи;
  • cut -d ' ' -f 1: печатает первое разделенное пробелом поле каждой строки;
  • while read user; do for gid in $(id -G "$user"); do [ $gid -eq $(id -g) ] && printf '%s\n' "$user" && break; done; done: для каждого пользователя, проверки, если один из идентификаторов группы текущего пользователя является тем же пользователем, выполняющим команду; если это, печатает пользователя;
  • sort -u: сортирует пользователей и удаляет потенциальные дубликаты.
% whoami
user
% who                     
foo      tty1         2016-01-27 16:49
user     tty2         2016-01-24 21:26 (:1)
user     pts/2        2016-01-27 16:33 (:1)
user     pts/4        2016-01-27 16:48 (:1)
% getent group user    
user:x:1000:
% who | cut -d ' ' -f 1 | while read user; do for gid in $(id -G "$user"); do [ $gid -eq $(id -g) ] && printf '%s\n' "$user" && break; done; done | sort -u
user
% sudo usermod -aG user foo
% who | cut -d ' ' -f 1 | while read user; do for gid in $(id -G "$user"); do [ $gid -eq $(id -g) ] && printf '%s\n' "$user" && break; done; done | sort -u
foo
user
3
ответ дан 1 December 2019 в 16:25

Другие вопросы по тегам:

Похожие вопросы: