web-dev-qa-db-fra.com

Quel est l'ID de groupe de ce nom de groupe?

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

La sortie serait par exemple:

Group adm with GID=4
20
Maythux

Un hack pour le nécessaire: (encore peut-être il y a beaucoup mieux réponse)

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

Version simplifiée (Merci à @ A.B):

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

Exemple:

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

Utilisez la commande getent pour traiter les groupes et les informations utilisateur, au lieu de lire manuellement /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 des fichiers peuvent être remplacés par d'autres sources. getent obéit à cette configuration. getent imprime les données, quelle que soit la source, dans le même format que les fichiers, vous pouvez donc analyser la sortie de la même manière que vous analyseriez /etc/passwd:

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

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

$ id -u lightdm
105
29
muru

Ceci peut être fait simplement avec cut:

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

getent group Sudo obtiendra 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 corresponde, utilisez la substitution de commande dans echo:

$ echo "Group Sudo with GID="$(cut -d: -f3 < <(getent group Sudo))""
Group Sudo with GID=27
18
heemayl

Utiliser Perl one-liner:

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

ou plus court (et mieux)

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