101 votes

Afficher tous les utilisateurs et leurs groupes/vice versa

Je sais que j'ai des groupes et des utilisateurs existants mais je ne suis pas sûr de leur association. Existe-t-il une commande Shell que je peux utiliser pour répertorier tous les utilisateurs ou tous les groupes et une commande pour répertorier tous les groupes / utilisateurs pour un utilisateur / groupe spécifié ?

Donc quelque chose comme showusers listerait tous les utilisateurs, et showgroups -u thisuser montrerait tous les groupes qui ont thisuser en elle.

132voto

Samat Jain Points 165

Tous les utilisateurs :

$ getent passwd

Tous les groupes :

$ getent group

Tous les groupes avec un utilisateur spécifique :

$ getent group | grep username

25voto

nohup Points 231

Lister les utilisateurs et leurs groupes :

for user in $(awk -F: '{print $1}' /etc/passwd); do groups $user; done

Lister les groupes et leurs utilisateurs :

cat /etc/group | awk -F: '{print $1, $3, $4}' | while read group gid members; do
    members=$members,$(awk -F: "\$4 == $gid {print \",\" \$1}" /etc/passwd);
    echo "$group: $members" | sed 's/,,*/ /g';
done

8voto

Fredrick Gauss Points 169

Si vous ne vous souciez pas des utilisateurs distants tels que LDAP ou NIS, pour lister les utilisateurs et leurs groupes associés de manière simple :

cut -d: -f1 /etc/passwd | xargs groups

Sortie ;

root : root
myuser : root www-data fuse 
anotheruser : anotheruser   cdrom floppy audio dip video plugdev scanner bluetooth netdev

3voto

Marcos Valle Points 31

Lister tous les utilisateurs

cut -d':' -f 1 /etc/passwd

Ou

awk -F ':' '{print $1}' /etc/passwd

Alors que cat /etc/passwd montre tous les utilisateurs (et un tas d'autres choses), cut -d ':' -f 1 est un moyen simple de séparer chaque ligne avec ':' comme délimiteur et d'extraire seulement le premier champ (utilisateurs). C'est à peu près la même chose que la version awk.

Liste de tous les groupes

cut -d':' -f 1 /etc/group

Ou

awk -F ':' '{print $1}' /etc/group

Devinez quoi, c'est très similaire à la liste des utilisateurs. Il suffit d'analyser /etc/group à la place.

Un autre moyen intéressant, peut-être plus proche de ce que voulait le PO, est le suivant compgen . Mais je ne suis pas sûr des problèmes de compatibilité.

compgen -u
compgen -g

0voto

jschnasse Points 123

Utilisez getent passwd{1000..60000} pour ne répertorier que les utilisateurs ajoutés manuellement. Voir : https://linuxize.com/post/how-to-list-users-in-linux/

for user in $(getent passwd {1000..60000} |awk -F: '{print $1}');
do 
    groups $user; 
done

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X