O "outro" dedo (campos GECOS em /etc/passwd)

O "outro" dedo (campos GECOS em /etc/passwd)

no arquivo /etc/passwdtemos o chamado GECOS fields(que significa “General Electric Comprehensive Operating System”), ou seja:

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

Onde GECOSestão divididos como:

:FullName,RoomAddress,WorkPhone,HomePhone,Others:

E Othersestão divididos em quantas vírgulas desejar:

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

Nas man chfnpáginas pode-se ler:

O outro campo é usado para armazenar informações contábeis usadas por outros aplicativos.

C languageAgora, para um desenvolvedor de aplicativos ( estou interessado em system callse/ou bash script), qual é a melhor maneira de obter essas informações?

E considerando apenas o Bashambiente, dado que o fingercomando não pode exibir os otherscampos (ou pelo menos não vejo como), quais são os outros comandos que podem? Sei que chfnnão apenas mostrar, mas permitir que sejam mudados. E se alguém apenas enviar para stdout?

Responder1

A melhor maneira que encontrei é usar getentporque funcionará com LDAP/NIS ou outros métodos de usuários não locais

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

Responder2

Por exemplo, em um script bash você pode imprimir o quinto campo do arquivo /etc/passwdcom awk/gawk:

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

A opção -F fsusa fs para o separador do campo de entrada (neste caso :).
Você pode ler mais, por exemplo, na página inicial do GNU awk [1] .
O Awk tem a função split()de dividir uma string (onde neste caso você usará o 5º campo como string e o ,como separador). Inspire-se em alguma outra resposta sobre isso [2]... .

Responder3

Você pode usar apenas dois comandos de corte aninhados:

  • primeiro com ":" como separador de campo, corte os campos 1 e 5; e
  • segundo com "," como separador de campo, corte os campos 1 e 5-N;

informação relacionada