Якщо у вас є кореневий доступ на машині, ви можете зробити наступне:
sudo grep -vE '^[^*!]+:[*!]:' /etc/shadow | sort | cut -d: -f1 | while read user; do id $user; done | column -ts' ,' | vi '+set nowrap' -
Як це працює
Станьте коренем, щоб прочитати тіньовий файл. Ви потребуєте кореневих привілеїв, лише якщо хочете перевірити, чи є у користувача встановлений пароль (користувачеві користувач), інакше ви можете просто 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
. Якщо вам потрібні імена груп, пограйте з приєднанням (яке насправді може відображати лише підмножину стовпців, btw).