Qual è l'ID gruppo di questo nome gruppo?


27

Come ottenere l'ID GID del gruppo che fornisce il nome del gruppo.

L'output sarebbe ad esempio:

Group adm with GID=4

Risposte:


41

Utilizzare il getentcomando per elaborare gruppi e informazioni utente, anziché leggere manualmente /etc/passwd, /etc/groupsecc. Il sistema stesso utilizza /etc/nsswitch.confper decidere da dove ottenere le informazioni e le impostazioni nei file possono essere sovrascritte da altre fonti. getentobbedisce a questa configurazione. getentstampa 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

Ok, awkè più corto di perl=)
AB

20

Questo può essere fatto semplicemente con cut:

$ cut -d: -f3 < <(getent group sudo)
27

getent group sudootterrà la riga relativa al sudogruppo dal /etc/groupfile:

$ 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 =)
AB

1
Perché la sostituzione del processo? Cosa c'è che non va GID="$(getent group cdrom | cut -d: -f3)"?
kos,

@kos Non mi piace gestire le cose in subshells a meno che non sia un must .....
heemayl

@AB Edited ...
heemayl

Ma è POSIX ...: '(No, sto solo scherzando, sinceramente non conoscevo la differenza. +1
kos

1

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


0

Utilizzando perluna 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

2
Abbastanza sicuro che perl possa fare la scissione per te, penso che l' opzione -Fo lo -lfaccia.
Muru,

0

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

1
Prova questo:awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
AB

Vedi UUOC
kos,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.