Comment obtenir l'ID de groupe GID en donnant le nom du groupe.
La sortie serait par exemple :
Groupe adm avec GID=4
Comment obtenir l'ID de groupe GID en donnant le nom du groupe.
La sortie serait par exemple :
Groupe adm avec GID=4
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
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
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
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
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.