web-dev-qa-db-fra.com

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 afficherait tous les groupes contenant thisuser.

75
Steve Robbins

Tous les utilisateurs:

$ getent passwd

Tous les groupes:

$ getent group

Tous les groupes avec un utilisateur spécifique:

$ getent group | grep username
100
EEAA

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
18
nohup

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

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

Production;

root : root
myuser : root www-data Fuse 
anotheruser : anotheruser   cdrom floppy audio dip video plugdev scanner bluetooth netdev
5
Fredrick Gauss

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 diviser chaque ligne avec ':' comme délimiteur et extraire uniquement le premier champ (utilisateurs). À peu près la même chose que la version awk.

Lister tous les groupes

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

Ou

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

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

compgen est une autre façon intéressante, peut-être plus proche de ce que OP voulait. Je ne suis pas sûr des problèmes de compatibilité.

compgen -u
compgen -g
3
Marcos Valle

Utilisation getent passwd{1000..60000} pour répertorier uniquement 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
0
jschnasse