Jika Anda memiliki akses root pada mesin, Anda dapat melakukan hal berikut:
sudo grep -vE '^[^*!]+:[*!]:' /etc/shadow | sort | cut -d: -f1 | while read user; do id $user; done | column -ts' ,' | vi '+set nowrap' -
Bagaimana itu bekerja
Menjadi root untuk membaca file bayangan. Kamu saja membutuhkan hak akses root jika Anda ingin untuk memeriksa apakah pengguna memiliki password set (pengguna manusia), jika tidak, anda hanya dapat cat /etc/passwd
bukannya sudo grep ...
:
sudo
Hanya tampilkan pengguna yang memiliki kumpulan kata sandi:
grep -vE '^[^*!]+:[*!]:' /etc/shadow
Sortir menurut nama pengguna:
sort
Buang semua informasi kecuali untuk nama pengguna:
cut -d: -f1
Iterasi melalui nama pengguna dan perkaya dengan informasi grup:
while read user; do id $user; done
Format input ke dalam kolom:
column -ts' ,'
Gunakan vi untuk melihat hasilnya:
vi '+set nowrap' -
Jika Anda tidak memiliki akses root,
coba sesuatu seperti ini:
cut -d: -f1 /etc/passwd | sort | while read user; do id $user; done | sed 's/\(\()\|^\)[^(]*(\|)\)/ /g' | column -t
Hasilnya agak berbeda, tetapi saya membiarkannya sebagai latihan bagi pembaca untuk menggabungkan dua bagian dalam jawaban ini menjadi sesuatu yang sepenuhnya sesuai dengan pekerjaan itu. (Apakah kamu tidak hanya cinta sed
?)
cut
. Untuk abjad, adasort
. Jika Anda memerlukan nama grup, mainkan dengan join (yang mungkin sebenarnya hanya dapat menampilkan sebagian kolom, btw).