Risposte:
Utilizzare il getent
comando per elaborare gruppi e informazioni utente, anziché leggere manualmente /etc/passwd
, /etc/groups
ecc. Il sistema stesso utilizza /etc/nsswitch.conf
per decidere da dove ottenere le informazioni e le impostazioni nei file possono essere sovrascritte da altre fonti. getent
obbedisce a questa configurazione. getent
stampa i dati, indipendentemente dalla fonte, nello stesso formato dei file, quindi puoi analizzare l'output nello stesso modo in cui analizzeresti /etc/passwd
:
getent group sudo | awk -F: '{printf "Group %s with GID=%d\n", $1, $3}'
Nota che, per un nome utente, questo è molto più semplice. Utilizzare id
:
$ id -u lightdm
105
Questo può essere fatto semplicemente con cut
:
$ cut -d: -f3 < <(getent group sudo)
27
getent group sudo
otterrà la riga relativa al sudo
gruppo dal /etc/group
file:
$ getent group sudo
sudo:x:27:foobar
Quindi possiamo semplicemente prendere il terzo campo delimitato da :
.
Se si desidera la stringa di output di conseguenza, utilizzare la sostituzione dei comandi in echo
:
$ echo "Group sudo with GID="$(cut -d: -f3 < <(getent group sudo))""
Group sudo with GID=27
% echo "Group cdrom with GID="$(cut -d: -f3 < <(getent group sudo))"" Group cdrom with GID=27
, per favore, un po 'più generico =)
GID="$(getent group cdrom | cut -d: -f3)"
?
le risposte più complicate sono sempre apprezzate - imparo molto leggendole abbastanza onestamente.
Sono venuto su questa pagina perché stavo cercando l'ID di gruppo del mio gruppo di posta e ignaro di dove fossero archiviate tali informazioni.
le tue risposte sono fantastiche - ecco la semplice con cui mi è venuta in mente
def @ fourof4: / home $ cat / etc / group | posta grep
mail: x: 8:
So che non risolve l'ID, ma è servito al mio scopo.
Blockquote Prova questo: awk -F: '/ sudo / {print "Group" $ 1 "con GID =" $ 3}' / etc / group - AB 23 giu 15 alle 15:51 Blockquote
Vedo questo anche menzionato oltre a quello che ho citato .... tutti ottengono il mio amore - scusate se mi mancate
questo è ciò che mi ha guidato a quel file.
Grazie e continuate a nutrirmi dell'eccellente in qualsiasi forma desideriate! DEF
Utilizzando perl
una linea:
% perl -ne '@elements=(split /:/); printf "Group %s with GID=%s\n",$elements[0],$elements[2]' <<< $(getent group sudo)
Group sudo with GID=27
o più corto (e migliore)
% perl -F/:/ -ane 'printf "Group %s with GID=%s\n",$F[0],$F[2]' <<< $(getent group sudo)
Group sudo with GID=27
-F
o lo -l
faccia.
Un trucco per il necessario: (forse c'è ancora una risposta molto migliore)
awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"
Versione più semplice (grazie a @AB):
awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
Esempio:
$ awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep sudo
Group sudo with GID=27
awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
awk
è più corto diperl
=)