¿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

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

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

% 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


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

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

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

Ver UUOC
kos
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.