OP ha formulato la domanda per escludere la possibilità di utilizzare il comando gruppi . Dal momento che fa parte dei coreutils su Linux, (a) è stato rimosso o (b) OP sta digitando male il nome.
OP avrebbe potuto usare in groups
questo modo, ad esempio:
for name in $(cut -d: -f1 /etc/passwd);do groups $name|grep -w sudo|awk '{print $1;}';done
Una risposta suggerita è solo grep's per il nome del gruppo in /etc/group
. A volte funziona come previsto.
Un uso leggermente migliore di grep tiene conto della sintassi di /etc/group
:
group_name:password:GID:user_list
in modo che solo la parte prima dei primi due punti sia un nome di gruppo valido. Un semplice grep, indipendentemente dalla sintassi, può (e vuole) raccogliere partite fuorvianti dal file. Usa le espressioni regolari per far corrispondere al grep esattamente ciò che è necessario:
grep -E '^users:' /etc/group |sed -e 's/^.*://'
o usando una variabile di shell:
grep -E '^'$groupname':' /etc/group |sed -e 's/^.*://'
Tuttavia, questo elenca solo quelli che non fanno parte di un gruppo predefinito . Per aggiungere quelli , è necessario prendere in considerazione il file delle password, ad esempio, estraendo il numero del gruppo-id da /etc/group
, e la stampa gli utenti il cui gruppo di default partite da /etc/passwd
, ad esempio,
grp=$(awk -F: '$1 ~ /^users$/ {print $3; }' </etc/group)
awk -F: '$4 ~ /^'$grp'$/ { print $1; }' </etc/passwd
Puoi fare la stessa cosa usando solo grep e sed, ma è più lavoro che usare awk.
Un'altra risposta suggerita è stata proposta usando getent
, che probabilmente si troverà su una macchina Linux (con Debian, fa parte di GNU libc). Tuttavia, un rapido controllo di ciò mostra che fornisce solo il /etc/group
contenuto.
Io (come la maggior parte) non ho libusers
o lid
installato, quindi non posso commentare se soddisfa le condizioni di OP.
C'è anche il id
programma, che fornisce informazioni di gruppo. Qualcuno potrebbe espandersi su questo come una possibile risposta.
groups
comando. È improbabile che tu non lo abbia su Linux, poiché fa parte di coreutils.