Я знаю, что вижу список зарегистрированных пользователей, с who
команда. Но позволяет, говорят, я хочу видеть, кто в моей группе зарегистрирован. Как я могу сделать это?
Имена пользователей, содержащие пробелы, не позволяются по умолчанию на 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