Solution 1 :
Tous les utilisateurs :
$ getent passwd
Tous les groupes :
$ getent group
Tous les groupes avec un utilisateur spécifique :
$ getent group | grep username
Solution 2 :
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
Solution 3 :
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
Sortie ;
root : root myuser : root www-data fuse anotheruser : anotheruser cdrom floppy audio dip video plugdev scanner bluetooth netdev
Solution 4 :
Répertorier tous les utilisateurs
cut -d':' -f 1 /etc/passwd
Ou
awk -F ':' '{print $1}' /etc/passwd
Tandis que cat /etc/passwd affiche 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 d'extraire uniquement le premier champ (utilisateurs). À peu près la même chose que la version awk.
Répertorier 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. Analysez simplement /etc/group à la place.
Un autre moyen intéressant, peut-être plus proche de ce que OP voulait, est compgen . Je ne suis pas sûr des problèmes de compatibilité cependant.
compgen -u
compgen -g