Réponses:
Utilisez la getent
commande pour traiter les groupes et les informations utilisateur, au lieu de les lire manuellement /etc/passwd
, /etc/groups
etc. Le système lui-même utilise /etc/nsswitch.conf
pour décider d'où il obtient 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, afin que vous puissiez ensuite analyser la sortie de la même manière que vous le feriez /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. Utilisation id
:
$ id -u lightdm
105
Cela peut être fait simplement avec cut
:
$ cut -d: -f3 < <(getent group sudo)
27
getent group sudo
obtiendra la ligne concernant le sudo
groupe du /etc/group
fichier:
$ getent group sudo
sudo:x:27:foobar
Ensuite, nous pouvons simplement prendre le troisième champ délimité par :
.
Si vous voulez la chaîne de sortie en conséquence, utilisez la substitution de commandes dans 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
, s'il vous plaît un peu plus générique =)
GID="$(getent group cdrom | cut -d: -f3)"
?
des réponses plus compliquées sont toujours appréciées - j'apprends tellement en les lisant très honnêtement.
Je suis tombé sur cette page parce que je cherchais l'identifiant de groupe de mon groupe de messagerie et je ne savais pas où ces informations étaient stockées.
vos réponses sont excellentes - voici la réponse simple que j'ai trouvée
def @ fourof4: / home $ cat / etc / group | courrier grep
courrier: x: 8:
Je sais que cela ne trie pas la pièce d'identité, mais cela a servi mon objectif.
Blockquote Essayez ceci: awk -F: '/ sudo / {print "Group" $ 1 "avec GID =" $ 3}' / etc / group - AB 23 juin 15 à 15:51 Blockquote
je vois cela aussi mentionné en plus de celui que j'ai cité .... tout le monde obtient mon amour - désolé si vous m'avez manqué
c'est ce qui m'a guidé vers ce dossier.
Merci et continuez à me nourrir de l'excellent sous toutes les formes que vous souhaitez! def
Utilisation d' perl
une doublure:
% 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
-F
ou -l
fait ça.
Un hack pour le nécessaire: (peut-être qu'il y a peut-être une bien meilleure réponse)
awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"
Version plus simple (Merci à @AB):
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
awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
awk
est plus court queperl
=)