43 votes

Quel est l'identifiant du groupe de ce nom de groupe ?

Comment obtenir l'ID de groupe GID en donnant le nom du groupe.

La sortie serait par exemple :

Groupe adm avec GID=4

56voto

muru Points 180007

Utilisez la getent commande pour traiter les informations de groupe et d'utilisateur, au lieu de lire manuellement les fichiers /etc/passwd, /etc/groups, etc. Le système lui-même utilise /etc/nsswitch.conf pour décider d'où il tire ses informations, et les paramètres dans les fichiers peuvent être remplacés par d'autres sources. getent obéit à cette configuration. getent affiche des données, peu importe la source, dans le même format que les fichiers, de sorte que vous pouvez ensuite analyser la sortie de la même manière que vous analyseriez /etc/passwd:

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

Notez que, pour un nom d'utilisateur, c'est beaucoup plus facile. Utilisez id:

$ id -u lightdm
105

38voto

heemayl Points 85741

Cela peut être simplement fait avec cut :

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

getent group sudo récupérera la ligne concernant le groupe sudo à partir du fichier /etc/group :

$ getent group sudo
sudo:x:27:foobar

Ensuite, nous pouvons simplement prendre le troisième champ délimité par :.

Si vous voulez que la chaîne de sortie soit en conséquence, utilisez la substitution de commande dans echo :

$ echo "Groupe sudo avec GID="$(cut -d: -f3 < <(getent group sudo))""
Groupe sudo avec GID=27

3voto

Maythux Points 77506

Un hack pour les besoins : (peut-être qu'il y a encore une meilleure réponse)

awk -F\: '{print "Groupe " $1 " avec GID=" $3}' /etc/group | grep "nom-du-groupe"

Version plus simple (Merci à @A.B) :

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

Exemple:

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

0voto

A.B. Points 84870

En utilisant perl en une seule ligne:

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

ou plus court (et mieux)

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X