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