¿Cuál es la identificación del grupo de este nombre de grupo?

27

Cómo obtener el ID de grupo GID con el nombre del grupo.

El resultado sería, por ejemplo:

Group adm with GID=4
Maythux
fuente

Respuestas:

41

Use el getentcomando para procesar grupos e información del usuario, en lugar de leerlo manualmente /etc/passwd, /etc/groupsetc. El sistema mismo usa /etc/nsswitch.confpara decidir de dónde obtiene su información, y la configuración de los archivos puede ser anulada por otras fuentes. getentobedece esta configuración. getentimprime datos, sin importar la fuente, en el mismo formato que los archivos, por lo que puede analizar la salida de la misma manera que analizaría /etc/passwd:

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

Tenga en cuenta que, para un nombre de usuario, esto es mucho más fácil. Uso id:

$ id -u lightdm
105
muru
fuente
Ok, awkes más corto que perl=)
AB
20

Esto se puede hacer simplemente con cut:

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

getent group sudoobtendrá la línea con respecto al sudogrupo del /etc/grouparchivo:

$ getent group sudo
sudo:x:27:foobar

Entonces podemos tomar el tercer campo delimitado por :.

Si desea la cadena de salida en consecuencia, use la sustitución de comandos dentro de echo:

$ echo "Group sudo with GID="$(cut -d: -f3 < <(getent group sudo))""
Group sudo with GID=27
heemayl
fuente
% echo "Group cdrom with GID="$(cut -d: -f3 < <(getent group sudo))"" Group cdrom with GID=27, por favor, un poco más genérico =)
AB
1
¿Por qué la sustitución del proceso? ¿Qué tiene de malo GID="$(getent group cdrom | cut -d: -f3)"?
kos
@kos No me gusta ejecutar cosas en subcapas a menos que sea un deber .....
heemayl
@AB Editado ...
heemayl
Pero es POSIX ...: '(No, solo bromeaba, realmente no sabía la diferencia. +1
kos
1

Las respuestas más complicadas siempre son apreciadas: aprendo mucho al leerlas con sinceridad.

Llegué a esta página porque estaba buscando la identificación del grupo de mi grupo de correo y no sabía dónde estaba almacenada esa información.

sus respuestas son geniales: aquí está la simple que se me ocurrió

def @ fourof4: / home $ cat / etc / group | correo grep

correo: x: 8:

Sé que no resuelve la identificación, pero cumplió mi propósito.

Blockquote Pruebe esto: awk -F: '/ sudo / {print "Group" $ 1 "con GID =" $ 3}' / etc / group - AB Jun 23 '15 a las 15:51 Blockquote

veo que esto también se menciona además del que cité ... todos reciben mi amor - lo siento si te extrañé

Esto es lo que me guió a ese archivo.
¡Gracias y sigue alimentándome con el excelente en cualquier forma que desees! def

def
fuente
0

Usando perlone-liner:

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

o más corto (y mejor)

% perl -F/:/ -ane 'printf "Group %s with GID=%s\n",$F[0],$F[2]' <<< $(getent group sudo)
Group sudo with GID=27
AB
fuente
2
Estoy bastante seguro de que Perl puede dividirlo por usted, creo que la opción -Fu lo -lhace.
muru
0

Un truco para lo necesario: (todavía tal vez hay una respuesta mucho mejor)

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

Versión más simple (gracias a @AB):

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

Ejemplo:

$ awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep sudo 
Group sudo with GID=27
Maythux
fuente
1
Pruebe esto:awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
AB
Ver UUOC
kos