¿Hay un comando para enumerar todos los nombres de grupos de Unix? [cerrado]

615

Sé que hay un /etc/grouparchivo que enumera todos los grupos de usuarios.

Me gustaría saber si hay un comando simple para enumerar todos los nombres de grupos de usuarios a pesar de analizar el /etc/grouparchivo legible en todo el mundo . Estoy dispuesto a crear una página web de administrador que enumere los nombres de los grupos de cuentas de Linux.

cavila
fuente
66
Hasta ahora probó stackoverflow.com/questions/14059916/…
ott--
2
"Estoy dispuesto a crear una página web que enumere los usuarios de Linux": ¿qué problema está tratando de resolver? Esto suena como algo que puede causar algunos problemas de seguridad (exponer la lista de usuarios, exponer las credenciales).
Estaba tratando de dar un ejemplo simple. Me gustaría abrir una "página web del sistema de administrador para enumerar los nombres actuales de las cuentas de Linux". En Linux pude encontrar comandos para agregar un usuario, eliminar un usuario, cambiar un usuario, encontrar los grupos de un usuario determinado pero no encontré un comando para buscar un usuario por fragmento de nombre. Creo que la pregunta no es tan irrelevante. Todo lo que podía hacer para recordar una cuenta de grupo de Linux era buscar en el archivo / etc / group
cavila

Respuestas:

871

Para enumerar todos los grupos locales que tienen usuarios asignados, use este comando:

cut -d: -f1 /etc/group | sort

Para más información-> Grupos de Unix , comando Cortar , comando ordenar

Arpit
fuente
3
Sí, MichaelIT tiene razón, el comando de grupos no enumeró todos los grupos. Le pregunté esto porque no estoy seguro si hay un comando simple como grupos para enumerar todos los nombres de grupos o incluso un comando como grupos [-a | --todos] para enumerar todos los grupos del sistema sin hacer un análisis de archivos.
cavila
1
ok así que por ahora la respuesta es NO. Necesita usar la edición de texto para filtrar el archivo de grupo.
cavila
3
¿Qué es "cut -d: -f1"?
zed
55
@zed cutes otro comando que extrae la columna específica de una entrada. Aquí estoy extrayendo el campo 1 donde los campos están delimitados por:
Arpit
267

Si desea que todos los grupos sean conocidos por el sistema, recomendaría usar en getent grouplugar de analizar /etc/group:

getent group

La razón es que en los sistemas en red, los grupos no solo pueden leer /etc/group archivo, sino también obtenerlos a través de LDAP o Páginas Amarillas (la lista de grupos conocidos proviene del archivo de grupo local más los grupos recibidos a través de LDAP o YP en estos casos).

Si desea solo los nombres de grupo que puede usar:

getent group | cut -d: -f1
dasup
fuente
77
Para algunos casos de uso, puede ser preferible una lista ordenada de nombres de grupos:getent group | cut -d: -f1 | sort
user1364368
2
Si desea líneas numeradas, hágalo getent group | cut -d: -f1 | sort | cat -n.
MLC
¡Gran punto para sistemas en red como LDAP!
Maziyar
50

En Linux, macOS y Unix para mostrar los grupos a los que pertenece, use:

id -Gn

que es equivalente a la groupsutilidad que ha quedado obsoleta en Unix (según el manual de Unix ).

En macOS y Unix, id -pse sugiere el comando para la interacción normal.

Explicación de los parámetros:

-G, --groups- imprime todas las ID de grupo

-n, --name- imprima un nombre en lugar de un número, para-ugG

-p - Hacer que la salida sea legible para humanos.

kenorb
fuente
10
Y id -Gn someusernamedevuelve la lista de grupos para el usuario especificado.
sombrío
66
id -Gnz | xargs -0 -I% echo %enumerará cada grupo en una línea separada. Esto es útil si los nombres de los grupos tienen espacios en ellos.
Mark Lakata
1
¿Cómo es groupsobsoleto? Alguna fuente? Busqué "comando de grupos de Unix obsoleto" pero no encontré nada.
Franklin Yu
1
@FranklinYu Está en la página del manual de BSD paragroups .
kenorb
3
Responda la pregunta original perteneciente a grupos fuera del usuario actual.
No, el