Получение полного имени пользователя неверно

Почему, когда я выполняю команду типа:

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

или

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

отображается Diogo Saraiva,,, вместо Diogo Saraiva?

Когда я установил Ubuntu 14.04 Я написал Diogo Saraiva, а не Diogo Saraiva,,, в поле Полное имя ...


результат cat /etc/passwd | grep diogosaraiva:

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

Можно ли без проблем изменить эту строку для

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

?


И Мой пользователь - не единственная проблема.

В файле / 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:
...
1
задан 24 April 2015 в 22:26

1 ответ

Пятое поле /etc/passwd известен как поле GECOS, оно резервируется для сохранения имени и комментариев пользователя. Записи, которые Вы видите только, зависят от того, как Вы добавляете пользователя, использующего adduser команда.

Я дам Ваш ответ, просто показав два примера adduser:

ПЕРВЫЙ СЛУЧАЙ: просто Full Name дан, Никакая другая информация:

$ 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

Поскольку Вы видите в 5-м поле комментарии, что я не дал входа, сохранены пробелом с запятыми , разделение их.

ВТОРОЙ СЛУЧАЙ: Вся информация дана:

$ 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

Поскольку Вы видите, что все части 5-го поля теперь заполняются с разделенными значениями запятой, данными как вход.

ИЗМЕНЕНИЕ ЗНАЧЕНИЯ: Если Вы хотите изменить значение поля комментария к чему-то еще, что можно использовать usermod команда с -c (--comment) опция:

$ sudo usermod -c "spamegg" foobar 

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

Или лучший путь как @muru предложенный в комментарии, использовать chfn. Если Вы зарегистрированы как пользователь foobar (в этом примере), затем можно использовать просто chfn, или как корень sudo chfn foobar. Это предложит Вам ввод значений один за другим снова, можно также изменить любое отдельное значение при помощи подходящего варианта chfn. Проверить man chfn для деталей.

1
ответ дан 25 April 2015 в 08:26

Другие вопросы по тегам:

Похожие вопросы: