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?


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

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.


0

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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.