Получение полного имени пользователя неверно
Почему, когда я выдаю команду вроде:
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 ответ
Пятое поле /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
для деталей.