Если у вас есть root-доступ на компьютере, вы можете сделать следующее:
sudo grep -vE '^[^*!]+:[*!]:' /etc/shadow | sort | cut -d: -f1 | while read user; do id $user; done | column -ts' ,' | vi '+set nowrap' -
Как это работает
Зарегистрируйтесь как root, чтобы прочитать файл shadow. Вам требуются права суперпользователя только в том случае, если вы хотите проверить, есть ли у пользователя установленный пароль (обычный пользователь), в противном случае вы можете просто cat /etc/passwd
вместо sudo grep ...
:
sudo
Показывать только тех пользователей, у которых установлен пароль:
grep -vE '^[^*!]+:[*!]:' /etc/shadow
Сортировать по имени пользователя:
sort
Откажитесь от всей информации, кроме имени пользователя:
cut -d: -f1
Переберите имена пользователей и обогатите их информацией о группах:
while read user; do id $user; done
Отформатируйте ввод в столбцы:
column -ts' ,'
Используйте vi для просмотра результата:
vi '+set nowrap' -
Если у вас нет корневого доступа,
попробуйте что-то вроде этого:
cut -d: -f1 /etc/passwd | sort | while read user; do id $user; done | sed 's/\(\()\|^\)[^(]*(\|)\)/ /g' | column -t
Его вывод немного отличается, но я оставляю читателю в качестве упражнения объединить две части в этом ответе в нечто, полностью соответствующее работе. (Разве ты не просто любишь sed
?)
cut
. Для алфавита естьsort
. Если вам нужны имена групп, поиграйтесь с объединением (которое может показывать только подмножество столбцов, кстати).