Как изменить данные пользователя с помощью chfn и usermod в Linux
Учетная запись пользователя — это больше, чем имя пользователя. Узнайте, как установить и изменить все метаданные, связанные с учетной записью пользователя Linux, из командной строки.
Что в имени?
Если вы используете Linux или Unix-подобный компьютер, у вас будет учетная запись пользователя. Имя, присвоенное учетной записи, является именем вашей учетной записи пользователя. Это имя, которое вы используете для входа в систему. Это также (по умолчанию) имя вашей группы входа и имя вашего домашнего каталога. Все они используют один и тот же идентификатор.
Существует еще один набор информации, которая может храниться для каждой учетной записи пользователя. Реальные данные, такие как полное имя человека, номер его офиса и номер рабочего телефона, например, могут быть определены и прикреплены к ним. Действительно, к учетным записям пользователей могут быть привязаны совершенно произвольные фрагменты информации.
С практической точки зрения это будет более полезно для системных администраторов, работающих с компьютерами, на которых настроено множество учетных записей пользователей. Но даже для однопользовательского компьютера с Linux всегда интересно знать, что происходит под капотом.
Месторождение GECOS
Когда-то у пионеров Unix не было собственного принтера. Им приходилось переносить свои задания на печать на мейнфрейм General Electric, на котором работала комплексная операционная система General Electric (GECOS). Для этого пользователям систем Unix необходимо было хранить и использовать учетные данные учетной записи в системе GECOS.
Поле GECOS было создано для хранения этих учетных данных. Это самое нишевое требование давно ушло в историю, а поле GECOS было перепрофилировано для хранения других данных, связанных с владельцем учетной записи пользователя. У него может быть новая работа, но он сохраняет свое старое название. Его до сих пор называют месторождением GECOS.
Поле хранится в файле /etc/passwd
вместе с другой информацией об учетной записи пользователя:
- Имя пользователя учетной записи.
- Идентификатор пользователя.
- Идентификатор группы.
- Путь к домашнему каталогу учетной записи пользователя.
- Оболочка, которая запускается при входе пользователя в систему.
Именно здесь команда finger и команда мизинца извлекают информацию, которую они отображают.
Команда chfn
chfn
(изменение информации о пальцах) позволяет вам устанавливать и изменять информацию, хранящуюся в поле GECOS. Информация хранится в виде списка, разделенного запятыми, внутри поля.
Команда chfn
уже присутствовала в Ubuntu 18.04.1 и Manjaro 18.1.0. Его нужно было установить на Fedora 31. Используйте эту команду для его установки:
sudo dnf install util-linux-user
Давайте посмотрим, что finger
может узнать о владельце учетной записи пользователя «dave». Чтобы получить максимум информации, воспользуемся опцией -l
(длинный формат):
finger dave -l
Вот что удалось найти:
Он извлекает имя пользователя учетной записи, домашний каталог и оболочку по умолчанию. Все они связаны с аккаунтом пользователя. Они не относятся к реальному человеку, который использует эту учетную запись. Мы можем использовать команду chfn
для хранения информации о реальном человеке.
chfn dave
Использование chfn
таким образом запускает короткий интерактивный процесс. Вам будет предложено ввести значение данных для каждой части информации, которую может содержать поле GECOS. Текущее значение для каждого значения данных отображается в квадратных скобках []. Если вы хотите сохранить текущие данные, вы можете нажать клавишу «Ввод», и значение в скобках будет сохранено.
Информация, которую мы ввели, была:
- Номер комнаты: 512
- Рабочий телефон: 555-4567
- Домашний телефон: 555-5432
Давайте проверим, получает ли finger
эту новую информацию:
finger dave -l
Да, это так. Но вы, возможно, заметили, что он не предлагал изменить полное имя. Это произойдет только в том случае, если вы используете sudo
. Но нам не нужно снова проходить весь сеанс chfn
только потому, что мы забыли использовать sudo
. Мы можем изменить любое значение данных по отдельности.
Изменение отдельных значений данных
Мы можем установить полное имя владельца учетной записи пользователя, используя параметр -f
(полное имя) вместе с sudo
.
sudo chfn -f "Dave McKay" dave
И если мы еще раз проверим finger
:
Мы видим, что полное имя было добавлено.
Есть и другие варианты изменения номера комнаты, номера домашнего и рабочего телефона. Чтобы изменить номер комнаты (офиса), используйте опцию -r
(номер комнаты):
sudo chfn -r 633 dave
Обратите внимание, что в некоторых дистрибутивах вы можете использовать параметр -o
(номер офисного помещения) вместо параметра -r
. Подробнее об этом в ближайшее время. На данный момент, чтобы увидеть параметры для вашей версии chfn
, используйте:
man chfn
Чтобы изменить номер рабочего телефона, используйте опцию -w
(рабочий телефон):
sudo chfn -w 555-1122 dave
И, наконец, для смены домашнего телефона используйте опцию -h
(домашний телефон):
sudo chfn -h 555-6576 dave
Давайте снова воспользуемся finger
, чтобы проверить, все ли эти изменения были приняты:
finger dave -l
Успех. Все эти команды сработали, и значения данных были обновлены.
Использование chfn в других учетных записях пользователей
Так много для изменения нашей собственной информации, как насчет изменения информации GECOS для других пользователей? Это так же просто. При этом вы должны использовать sudo
, но это единственная разница. Проверим, какие данные установлены для учетной записи пользователя mary:
finger mary -l
Для этой учетной записи пользователя устанавливается обычная информация по умолчанию. Добавим к информации:
sudo chfn mary
Мы запустим тот же сеанс, что и раньше, и нам будет предложено ввести значение данных для каждой части информации, которую можно сохранить. И поскольку мы использовали sudo
, нас просят указать значение данных полного имени.
Подождите, что это за последний пункт под названием «Другое»?
он поддерживается не всеми версиями chfn
, и вы видите его, только если используете sudo
, поэтому мы не видели его раньше, когда (намеренно) не использовал sudo
с:
chfn dave
Значение данных «Другое» может содержать все, что угодно. У него нет предписанного или ожидаемого использования.
Версии chfn
, которые поддерживают поле «Другое», также предоставляют параметр -o
(другое) для прямого изменения этого значения. Именно из-за конфликта между -o
для «номера офиса» и -o
для «другого», некоторые системы используют -r
для «комнаты». число.
Мы можем увидеть данные, хранящиеся для учетной записи пользователя mary в файле /etc/paswd
, используя less
:
less /etc/passwd
В системах, которые его поддерживают (проверьте страницу man
для вашей версии chfn
), вы можете установить поле «другое» напрямую, используя -o
(другой) вариант:
sudo chfn -o "HTG Freelancer" dave
И мы можем проверить данные для учетной записи пользователя dave с помощью команды less
:
less /etc/passwd
Это вызывает очевидный вопрос. Если ваша версия chfn
не поддерживает поле «Другое», как его изменить? Мы можем сделать это с помощью команды usermod
.
Команда usermod
Команда usermod
позволяет вам изменять аспекты учетной записи пользователя с помощью таких действий, как добавление или удаление учетной записи пользователя из групп и изменение их оболочки по умолчанию. Его также можно использовать для прямого управления полем GECOS.
Давайте подробнее рассмотрим строку в файле /etc/passwd
для учетной записи пользователя mary. Мы будем использовать grep, чтобы изолировать эту строку для нас. Это будет работать, потому что имена пользователей должны быть уникальными. Может быть только одна учетная запись пользователя с именем mary.
grep mary /etc/passwd
Отображаются поля в файле etc/passwd
. В качестве разделителя полей используется двоеточие «:
». поля слева направо:
- Имя пользователя учетной записи.
- Значок «x», указывающий, что пароль для этой учетной записи пользователя хранится в зашифрованном виде в файле
/etc/shadow
. - Идентификатор пользователя для учетной записи пользователя mary.
- Идентификатор группы для учетной записи пользователя mary.
- Поле GECOS.
- Путь к домашнему каталогу для учетной записи пользователя mary.
- Оболочка, которая запускается при входе в систему владельца учетной записи mary.
Запятая «,» используется в качестве разделителя значений данных в поле GECOS. Значения в поле GECOS слева направо:
- Полное имя.
- Номер комнаты (или офиса).
- Рабочий номер телефона.
- Номер домашнего телефона.
- Другая информация.
Обратите внимание, что команда usermod
устанавливает для всего поля GECOS новое значение, которое вы указали. Если вы укажете только полное имя человека, то в поле GECOS будет только полное имя. Это означает, что вы должны предоставить любые существующие значения данных, которые вы хотите сохранить.
Вот пример. Пользователь Мэри получила повышение и собирается переехать на четвертый этаж. У нее новый служебный номер, новый номер рабочего телефона, и мы добавим ее второе имя. Значение ее поля «Другое» также изменится. Хотя ее домашний номер телефона не изменится, мы должны предоставить его в строке usermod
.
Нам нужно использовать параметр -c
(комментарий), и нам нужно запустить команду с помощью sudo
.
sudo usermod -c "Mary Carol Quinn,405,5559654,555-7704,Linux Advocate" mary
Использование grep
для отчета о содержимом файла /etc/passwd
для mary показывает нам, что были добавлены новые значения.
grep mary /etc/passwd
Все течет, ничто не остается
Неточные данные ничего не стоят. Когда информация о людях меняется — офисные переезды, имена, должности — вы можете легко обновить их метаданные, чтобы отразить текущую должность.
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts