Wie lautet die Gruppen-ID dieses Gruppennamens?


26

So erhalten Sie die Gruppen-ID GID mit dem Gruppennamen.

Die Ausgabe wäre zum Beispiel:

Group adm with GID=4

Antworten:


40

Verwenden Sie den getentBefehl für die Verarbeitung von Gruppen und Benutzerinformationen, anstatt manuell zu lesen /etc/passwd, /etc/groupsusw. Das System selbst verwendet , /etc/nsswitch.confum zu entscheiden , wo sie von ihren Informationen bekommen, und Einstellungen in den Dateien , die von anderen Quellen außer Kraft gesetzt werden können. getentbefolgt diese Konfiguration. getentDruckt Daten, unabhängig von der Quelle, im selben Format wie die Dateien, sodass Sie die Ausgabe genauso analysieren können, wie Sie es tun würden /etc/passwd:

getent group sudo | awk -F: '{printf "Group %s with GID=%d\n", $1, $3}'

Beachten Sie, dass dies für einen Benutzernamen viel einfacher ist. Verwendung id:

$ id -u lightdm
105

Ok, awkist kürzer als perl=)
AB

20

Das geht ganz einfach mit cut:

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

getent group sudoerhält die Zeile bezüglich der sudoGruppe aus der /etc/groupDatei:

$ getent group sudo
sudo:x:27:foobar

Dann können wir einfach das dritte Feld abgrenzen :.

Wenn Sie die Ausgabezeichenfolge entsprechend wünschen, verwenden Sie die Befehlssubstitution innerhalb von 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, bitte etwas allgemeiner =)
AB

1
Warum die Prozessersetzung? Was ist los mit GID="$(getent group cdrom | cut -d: -f3)"?
Kos

@kos Ich mag es nicht, Dinge in Unterschalen laufen zu lassen, es sei denn, dies ist ein Muss .....
heemayl

@AB Bearbeitet ...
heemayl

Aber es ist POSIX ...: '(Nein, nur ein Scherz, ich kannte den Unterschied wirklich nicht. +1
kos

1

kompliziertere antworten sind immer willkommen - ich lerne so viel, wenn ich sie ganz ehrlich lese.

Ich bin auf diese Seite gekommen, weil ich nach der Gruppen-ID meiner E-Mail-Gruppe gesucht habe und nicht weiß, wo diese Informationen gespeichert sind.

Ihre Antworten sind großartig - hier ist die einfache, die ich mir ausgedacht habe

def @ fourof4: / home $ cat / etc / group | Grep Mail

mail: x: 8:

Ich weiß, dass es die ID nicht aussortiert, aber es hat meinen Zweck erfüllt.

Blockquote Versuchen Sie Folgendes: awk -F: '/ sudo / {print "Group" $ 1 "mit GID =" $ 3}' / etc / group - AB 23. Juni 15 um 15:51 Blockquote

Ich sehe, dass dies auch erwähnt wird, außer dem, den ich zitiert habe. Jeder bekommt meine Liebe. Entschuldigung, wenn ich dich vermisst habe

das hat mich zu dieser Akte geführt.
Danke und füttere mich weiterhin mit dem Ausgezeichneten in jeder Form, die du wünschst! def


0

Mit perlEinzeiler:

% perl -ne '@elements=(split /:/); printf "Group %s with GID=%s\n",$elements[0],$elements[2]' <<< $(getent group sudo)
Group sudo with GID=27

oder kürzer (und besser)

% perl -F/:/ -ane 'printf "Group %s with GID=%s\n",$F[0],$F[2]' <<< $(getent group sudo)
Group sudo with GID=27

2
Ziemlich sicher , dass Perl für Sie die Aufspaltung tun, ich denke , die -Foder -lOption das tut.
muru

0

Ein Hack für die Nötigen: (vielleicht gibt es noch viel bessere Antworten)

awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"

Einfachere Version (Danke an @AB):

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

Beispiel:

$ awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep sudo 
Group sudo with GID=27

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

Siehe UUOC
Kos
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.