¿Cómo averiguar qué grupo tiene un usuario determinado?

256

En Unix / Linux, ¿cómo saber en qué grupo se encuentra un usuario determinado a través de la línea de comandos?

Alex Argo
fuente
23
Para obtener lo contrario, vea quién está en un grupo dado, puede usar getent group <groupname>.
iconoclasta
1
@iconoclast: que no enumera los usuarios que pertenecen al grupo en / etc / passwd.
user2284570

Respuestas:

371
groups

o

groups user
Bombe
fuente
102

Este muestra el uid del usuario, así como todos los grupos (con sus gids) a los que pertenecen

id userid
Paul Tomblin
fuente
2
Esto parece ser bastante útil también. Tiene una salida más detallada que el comando 'grupos', por lo que si necesita la identificación de grupo / identificación de usuario, ¡use esto!
Alex Argo
Esta debería ser la respuesta más detallada y correcta, ¡tenga un voto positivo!
Harvey Lin
16

En Linux / OS X / Unix para mostrar los grupos a los que usted (o el usuario opcionalmente especificado) pertenece, use:

id -Gn [user]

que es equivalente a la groups [user]utilidad que ha quedado obsoleta en Unix.

En OS X / Unix, id -p [user]se sugiere el comando para la interacción normal.

Explicación sobre los parámetros:

-G, --groups- imprime todos los 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
0

o simplemente estudie / etc / groups (ok, esto probablemente no funcione si usa pam con ldap)

Nils
fuente
77
De hecho, esa es una mala respuesta. 'grupo gerente' es mejor.
bortzmeyer
0

A continuación se muestra el script que está integrado en el panel de control ansible y generador en formato CSV.

sh collection.sh

#!/bin/bash

HOSTNAME=`hostname -s`

for i in `cat /etc/passwd| grep -vE "nologin|shutd|hal|sync|root|false"|awk -F':' '{print$1}' | sed 's/[[:space:]]/,/g'`; do groups $i; done|sed s/\:/\,/g|tr -d ' '|sed -e "s/^/$HOSTNAME,/"> /tmp/"$HOSTNAME"_inventory.txt

sudo cat /etc/sudoers| grep -v "^#"|awk '{print $1}'|grep -v Defaults|sed '/^$/d;s/[[:blank:]]//g'>/tmp/"$HOSTNAME"_sudo.txt

paste -d , /tmp/"$HOSTNAME"_inventory.txt /tmp/"$HOSTNAME"_sudo.txt|sed 's/,[[:blank:]]*$//g' >/tmp/"$HOSTNAME"_inventory_users.txt

Mi salida se almacena en los archivos de texto a continuación.

cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
namasivayam.cse
fuente