Comment savoir quel groupe a un utilisateur donné?

256

Sous Unix / Linux, comment savoir dans quel groupe se trouve un utilisateur donné via la ligne de commande?

Alex Argo
la source
23
Pour obtenir le contraire, voyez qui est dans un groupe donné, vous pouvez utiliser getent group <groupname>.
iconoclaste
1
@iconoclast: qui ne répertorie pas les utilisateurs appartenant au groupe dans / etc / passwd.
user2284570

Réponses:

102

Celui-ci montre l'uid de l'utilisateur ainsi que tous les groupes (avec leurs gids) auxquels ils appartiennent

id userid
Paul Tomblin
la source
2
Cela semble également très utile. Il a une sortie plus détaillée que la commande 'groups', donc si vous avez besoin de l'ID de groupe / ID utilisateur, utilisez ceci!
Alex Argo
Cela devrait être la réponse la plus détaillée et la plus correcte, ayez un vote positif!
Harvey Lin
16

Sous Linux / OS X / Unix pour afficher les groupes auxquels vous (ou l'utilisateur éventuellement spécifié) appartenez, utilisez:

id -Gn [user]

qui équivaut à un groups [user]utilitaire obsolète sous Unix.

Sous OS X / Unix, la commande id -p [user]est suggérée pour une interaction normale.

Explication sur les paramètres:

-G, --groups- imprimer tous les identifiants de groupe

-n, --name- imprime un nom au lieu d'un nombre, par-ugG

-p - Rendez la sortie lisible par l'homme.

Kenorb
la source
0

ou étudiez simplement / etc / groups (ok cela ne fonctionne probablement pas s'il utilise pam avec ldap)

Nils
la source
7
En effet, c'est une mauvaise réponse. 'getent group' est meilleur.
bortzmeyer
0

Ci-dessous se trouve le script qui est intégré dans ansible et génère un tableau de bord au format 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

Ma sortie stockée dans les fichiers texte ci-dessous.

cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
namasivayam.cse
la source