Respuestas:
Use el getent
comando para procesar grupos e información del usuario, en lugar de leerlo manualmente /etc/passwd
, /etc/groups
etc. El sistema mismo usa /etc/nsswitch.conf
para decidir de dónde obtiene su información, y la configuración de los archivos puede ser anulada por otras fuentes. getent
obedece esta configuración. getent
imprime 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
Esto se puede hacer simplemente con cut
:
$ cut -d: -f3 < <(getent group sudo)
27
getent group sudo
obtendrá la línea con respecto al sudo
grupo del /etc/group
archivo:
$ 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 =)
GID="$(getent group cdrom | cut -d: -f3)"
?
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
Usando 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
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
-F
u lo -l
hace.
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
awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
awk
es más corto queperl
=)