Obtendo o nome completo do usuário errado

1

Por que quando eu emito um comando como:

awk -F: -v U="$LOGNAME" '==U{print }' /etc/passwd

ou

grep $USER /etc/passwd | awk 'BEGIN { FS=":" } { print  }'

é exibido Diogo Saraiva,,, em vez de Diogo Saraiva ?

Quando instalei o Ubuntu 14.04 eu escrevi Diogo Saraiva , não Diogo Saraiva,,, no campo Nome completo ...

resultado de cat /etc/passwd | grep diogosaraiva :

diogosaraiva:x:1000:1000:Diogo Saraiva,,,:/home/diogosaraiva:/bin/bash

Posso alterar essa linha para

diogosaraiva:x:1000:1000:Diogo Saraiva:/home/diogosaraiva:/bin/bash

sem nenhum problema?

E meu usuário não é o único problema.

No arquivo / etc / passwd:

...    
diogosaraiva:x:1000:1000:Diogo Saraiva,,,:/home/diogosaraiva:/bin/bash
sshd:x:116:65534::/var/run/sshd:/usr/sbin/nologin
mysql:x:117:125:MySQL Server,,,:/nonexistent:/bin/false
sysop:x:1001:1001::/home/sysop:/bin/bash
dovecot:x:118:126:Dovecot mail server,,,:/usr/lib/dovecot:/bin/false
dovenull:x:119:127:Dovecot login user,,,:/nonexistent:/bin/false
postfix:x:120:128::/var/spool/postfix:/bin/false
vmail:x:5000:5000::/var/mail:
...
    
por DiogoSaraiva 24.04.2015 / 21:26

1 resposta

1

O quinto campo de /etc/passwd é conhecido como o campo GECOS , está reservado para salvar o nome e comentários do usuário . As entradas que você está vendo apenas dependem de como você adiciona o usuário usando o comando adduser .

Eu darei sua resposta apenas mostrando dois exemplos de adduser :

PRIMEIRO CASO: Apenas o Full Name é dado, Nenhuma outra informação:

$ sudo adduser foobar
Adding user 'foobar' ...
........Truncated.............
passwd: password updated successfully

Changing the user information for foobar
Enter the new value, or press ENTER for the default
    Full Name []: foobar foobar
    Room Number []: 
    Work Phone []: 
    Home Phone []: 
    Other []: 
Is the information correct? [Y/n] 

$ getent passwd foobar
foobar:x:1002:1002:foobar foobar,,,:/home/foobar:/bin/bash

Como você pode ver no quinto campo, os comentários que eu não dei nenhuma entrada são mantidos em branco com vírgulas , separando-os.

SEGUNDO CASO: Todas as informações são fornecidas:

$ sudo adduser foobar
Adding user 'foobar' ...
Adding new group 'foobar' (1002) ...

..........Truncated...............
passwd: password updated successfully
Changing the user information for foobar
Enter the new value, or press ENTER for the default
    Full Name []: foobar foobar
    Room Number []: 10
    Work Phone []: 1010
    Home Phone []: 1234
    Other []: spamegg
Is the information correct? [Y/n] 

$ getent passwd foobar
foobar:x:1002:1002:foobar foobar,10,1010,1234,spamegg:/home/foobar:/bin/bash

Como você pode ver, todas as partes do quinto campo agora são preenchidas com os valores separados por vírgula dados como entrada.

ALTERANDO O VALOR: Se você quiser alterar o valor do campo de comentário para algo mais, use o comando usermod com a opção -c ( --comment ):

$ sudo usermod -c "spamegg" foobar 

$ getent passwd foobar
foobar:x:1002:1002:spamegg:/home/foobar:/bin/bash

Ou a melhor maneira de sugerir @muru no comentário, use chfn . Se você estiver conectado como o usuário foobar (neste exemplo), poderá usar apenas chfn ou como raiz sudo chfn foobar . Ele solicitará que você insira os valores um por um novamente. Você também pode alterar qualquer valor individual usando a opção apropriada de chfn . Verifique man chfn para detalhes.

    
por heemayl 24.04.2015 / 21:49