El "otro" dedo (campos GECOS en /etc/passwd)

El "otro" dedo (campos GECOS en /etc/passwd)

en el archivo /etc/passwdtenemos el llamado GECOS fields(que significa "Sistema Operativo Integral de General Electric"), es decir:

username:password:userid:groupid:gecos:home-dir:shell 

Donde GECOSse dividen como:

:FullName,RoomAddress,WorkPhone,HomePhone,Others:

Y Othersse dividen en tantas comas como quieras:

:FullName,RoomAddress,WorkPhone,HomePhone,Other1,Other2,Other3:

En las man chfnpáginas se puede leer:

El otro campo se utiliza para almacenar información contable utilizada por otras aplicaciones.

Ahora, para un desarrollador de aplicaciones (estoy interesado en C languagey system calls/o bash script), ¿cuál es la mejor manera de obtener esta información?

Y considerando solo el Bashentorno, dado que el fingercomando no puede mostrar los otherscampos (o al menos no veo cómo), ¿cuáles son otros comandos que pueden hacerlo? Sé que chfnno sólo mostrarlos, sino permitir que se cambien. ¿Qué pasa si uno simplemente lo envía a stdout?

Respuesta1

La mejor manera que he encontrado es usar getentporque funcionará con LDAP/NIS u otros métodos de usuarios no locales.

getent passwd $UID| awk -F ":" '{print $5}'

Respuesta2

Por ejemplo, en un script bash puedes imprimir el quinto campo del archivo /etc/passwdcon awk/gawk:

awk -F ":" '{print $5}' /etc/passwd

La opción -F fsusa fs para el separador de campo de entrada (en este caso :).
Puede leer más, por ejemplo, en la página de inicio de GNU awk [1] .
Awk tiene la función split()de dividir una cadena (donde en este caso usará el quinto campo como cadena y el ,como separador). Inspírate con alguna otra respuesta al respecto [2]... .

Respuesta3

Puedes usar dos comandos de corte anidados:

  • primero con ":" como separador de campo, corte los campos 1 y 5; y
  • segundo con "," como separador de campos, corte los campos 1 y 5-N;

información relacionada