OP a formulé la question pour exclure la possibilité d'utiliser la commande groups . Comme cela fait partie de coreutils sur Linux, soit (a) il a été supprimé, soit (b) OP saisit le nom de façon incorrecte.
OP aurait pu utiliser groups
comme ceci, par exemple:
for name in $(cut -d: -f1 /etc/passwd);do groups $name|grep -w sudo|awk '{print $1;}';done
Une réponse suggérée juste grep pour le nom du groupe dans /etc/group
. Parfois, cela fonctionne comme prévu.
Une utilisation légèrement meilleure de grep prend en compte la syntaxe de /etc/group
:
group_name:password:GID:user_list
de sorte que seule la partie précédant les deux points est un nom de groupe valide. Un simple grep sans égard à la syntaxe peut (et va) chercher des correspondances trompeuses dans le fichier. Utilisez des expressions régulières pour que le grep corresponde exactement à ce qui est nécessaire:
grep -E '^users:' /etc/group |sed -e 's/^.*://'
ou en utilisant une variable shell:
grep -E '^'$groupname':' /etc/group |sed -e 's/^.*://'
Cependant, cela ne répertorie que ceux qui ne font pas partie d'un groupe par défaut . Pour ajouter ceux , vous devez prendre en compte le fichier de mot de passe, par exemple, en extrayant le numéro ID de groupe à partir /etc/group
, et l' impression des utilisateurs dont le groupe par défaut correspond à partir /etc/passwd
, par exemple,
grp=$(awk -F: '$1 ~ /^users$/ {print $3; }' </etc/group)
awk -F: '$4 ~ /^'$grp'$/ { print $1; }' </etc/passwd
Vous pouvez faire la même chose en utilisant seulement grep et sed, mais c'est plus de travail que d'utiliser awk.
Une autre réponse suggérée a proposé d’utiliser getent
, qui est probablement aussi sur une machine Linux (avec Debian, cela fait partie de GNU libc). Cependant, une vérification rapide montre que seul le /etc/group
contenu est fourni .
Je (comme la plupart des gens) n’ai pas libusers
ou n’ai pas été lid
installé, je ne peux donc pas dire s’il répond aux conditions d’OP.
Il y a aussi le id
programme, qui donne des informations sur le groupe. Quelqu'un pourrait développer cela comme une réponse possible.
groups
commande. Il est peu probable que vous ne l’ayez pas sous Linux, car il fait partie de coreutils.