Si tiene acceso de root en la máquina, puede hacer lo siguiente:
sudo grep -vE '^[^*!]+:[*!]:' /etc/shadow | sort | cut -d: -f1 | while read user; do id $user; done | column -ts' ,' | vi '+set nowrap' -
Cómo funciona
Conviértete en root para leer el archivo shadow. Solo necesita privilegios de root si desea verificar si el usuario tiene una contraseña establecida (usuario humano), de lo contrario puede simplemente en cat /etc/passwd
lugar de sudo grep ...
:
sudo
Mostrar solo a los usuarios que tienen una contraseña establecida:
grep -vE '^[^*!]+:[*!]:' /etc/shadow
Ordenar por nombre de usuario:
sort
Descarte toda la información excepto el nombre de usuario:
cut -d: -f1
Iterar a través de los nombres de usuario y enriquecerlo con información grupal
while read user; do id $user; done
Formatee la entrada en columnas:
column -ts' ,'
Use vi para ver el resultado:
vi '+set nowrap' -
Si no tienes acceso de root,
prueba algo como esto:
cut -d: -f1 /etc/passwd | sort | while read user; do id $user; done | sed 's/\(\()\|^\)[^(]*(\|)\)/ /g' | column -t
Su salida es un poco diferente, pero lo dejo como un ejercicio para el lector para combinar las dos partes en esta respuesta en algo que se ajuste completamente al trabajo. (¿No solo amas sed
?)
cut
. Para alfabetizado, haysort
. Si necesita los nombres de los grupos, juegue con join (que en realidad puede mostrar solo un subconjunto de columnas, por cierto).