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
.
Tous les utilisateurs:
$ getent passwd
Tous les groupes:
$ getent group
Tous les groupes avec un utilisateur spécifique:
$ getent group | grep username
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
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
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.
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
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