zaLinux.ru

Как изменить информацию о пользователе с помощью chfn и usermod в Linux


Учётная запись пользователя — это нечто большее, чем имя пользователя. В этой статье вы узнаете, как установить и изменить все метаданные, связанные с учётной записью пользователя Linux, из командной строки.

Метаданные пользователя Linux

Если вы используете Linux или Unix-подобный компьютер, у вас будет учётная запись пользователя. Имя, присвоенное учётной записи, — это имя вашей учётной записи. Это имя, которое вы используете для входа в систему. Оно также (по умолчанию) является именем вашей группы входа и имя вашего домашнего каталога. Все они используют один и тот же идентификатор.

Существует ещё один набор информации, который можно сохранить для каждой учётной записи пользователя. Например, можно определить и привязать к ним реальные данные, такие как полное имя человека, номер его офиса и номер рабочего телефона. Действительно, к учётным записям пользователей могут быть привязаны совершенно произвольные фрагменты информации.

На практике это будет более полезно для системных администраторов, которые следят за компьютерами, на которых настроено множество учётных записей пользователей. Но даже для однопользовательского компьютера с Linux всегда интересно знать, что происходит под капотом.

Поле GECOS

Когда-то у пионеров Unix не было собственного принтера. Им приходилось передавать свои задания на печать на мэйнфрейм General Electric, на котором работала комплексная операционная система General Electric (GECOS). Для этого пользователям Unix-систем требовалось хранить и использовать учётные данные аккаунта в системе GECOS.

Поле GECOS было создано для хранения этих учётных данных. Это очень нишевое требование давно вошло в историю, и поле GECOS было переназначено для хранения других данных, связанных с владельцем учётной записи пользователя. У него может быть новая работа, но оно сохраняет своё старое название. Его до сих пор называют полем GECOS.

Это поле хранится в файле /etc/passwd вместе с другой информацией об учётной записи пользователя:

  • Имя пользователя учётной записи.
  • ID пользователя.
  • ID группы.
  • Путь к домашнему каталогу учётной записи пользователя.
  • Оболочка, которая запускается при входе пользователя в систему.

Именно отсюда команды finger и pinky получают информацию, которую они отображают.

Связанные статьи:

Команда chfn

chfn (change finger information — изменение информации для finger) позволяет вам устанавливать и изменять информацию, хранящуюся в поле GECOS. Информация хранится в поле в виде списка, разделённого запятыми.

Команда chfn уже присутствовала в Arch Linux, Kali Linux, Linux Mint, Ubuntu и Manjaro. Но её нужно было установить в Fedora. Используйте эту команду, чтобы установить её:

sudo dnf install util-linux-user

Давайте посмотрим, что finger сможет узнать о владельце учётной записи пользователя «mial». Чтобы получить максимум информации, мы будем использовать параметр -l (длинный формат):

finger -l mial

Вот что он смог найти:

Утилита извлекает имя пользователя учётной записи, домашний каталог и оболочку по умолчанию. Все это связано с учётной записью пользователя. Они не относятся к реальному человеку, который использует этот аккаунт. Мы можем использовать команду chfn для хранения информации о реальном человеке.

chfn mial

Использование chfn таким образом запускает короткий интерактивный процесс. Вам будет предложено ввести значение данных для каждой части информации, которую может содержать поле GECOS. Текущее значение для каждого значения данных отображается в скобках []. Если вы хотите сохранить текущие данные, вы можете нажать клавишу «Enter», и значение в скобках будет сохранено.

Мы ввели следующую информацию:

  • Номер комнаты: 456
  • Рабочий телефон: 555-4567
  • Домашний телефон: 555-5432

Давайте проверим, что finger улавливает эту новую информацию:

finger mial -l


Да, это так. Но вы, возможно, заметили, что он не предлагал изменить полное имя. Это произойдёт, только если вы воспользуетесь sudo. Но нам не нужно снова проходить весь сеанс chfn только потому, что мы забыли использовать sudo. Мы можем изменить любое значение данных индивидуально.

Изменение индивидуальных значений данных

Мы можем установить полное имя для владельца учётной записи пользователя, используя параметр -f (полное имя) вместе с sudo.

sudo chfn -f "Alexey Miloserdov" mial

И если ещё раз проверим finger:

Мы видим, что добавлено полное имя.

Есть и другие варианты изменения номера комнаты, номера домашнего и рабочего телефона. Чтобы изменить номер комнаты (офиса), используйте опцию -r (номер комнаты):

sudo chfn -r 633 mial

Обратите внимание, что в некоторых дистрибутивах вы можете использовать параметр -o (номер офисной комнаты) вместо параметра -r. Подробнее об этом чуть позже. На данный момент, чтобы увидеть параметры для вашей версии chfn, используйте:

man chfn

Чтобы изменить номер служебного телефона, используйте параметр -w (рабочий телефон):

sudo chfn -w 555-1122 mial

И наконец, чтобы изменить номер домашнего телефона, используйте параметр -h (номер домашнего телефона):


sudo chfn -h 555-6576 mial

Давайте снова воспользуемся finger, чтобы убедиться, что все эти изменения приняты:


finger mial -l

Успех. Все эти команды сработали, и значения данных были обновлены.

Использование chfn для других учётных записях пользователей

Так много для изменения нашей собственной информации, как насчёт изменения информации GECOS для других пользователей? Это так же просто. При этом вы должны использовать sudo, но это единственная разница. Давайте проверим, какие данные установлены для учётной записи пользователя mary:

finger mary -l

Для этой учётной записи пользователя устанавливается обычная информация по умолчанию. Добавим к информации:

sudo chfn mary

Мы проведём тот же сеанс, что и раньше, и нам будет предложено ввести значение данных для каждой части информации, которую можно сохранить. И поскольку мы использовали sudo, нас запрашивают полное имя этого пользователя.

Подождите, что это за последний пункт под названием «Другое» (Other)?

Он поддерживается не всеми версиями chfn, и вы видите его только в том случае, если используете sudo, поэтому мы не видели его раньше, когда (сознательно) не использовали sudo с:

chfn mial

Значение данных «Other» может содержать всё что угодно. У него нет предписанного или ожидаемого использования.

Версии chfn, поддерживающие поле «Other», также предоставляют параметр -o (other) для непосредственного изменения этого значения. Из-за конфликта между -o для «номера офиса» и -o для «другого» некоторые системы используют -r для «номера комнаты».

Мы можем увидеть данные, хранящиеся для учётной записи пользователя mary в файле /etc/paswd, используя less:

less /etc/passwd

В системах, которые его поддерживают (проверьте страницу руководства для своей версии chfn), вы можете установить поле «other» напрямую, используя параметр -o (other):

sudo chfn -o "Автор ZaLinux" mial

И мы можем проверить данные для учётной записи пользователя mial, используя команду less:

less /etc/passwd

Возникает очевидный вопрос. Если ваша версия chfn не поддерживает поле «Другое», как его изменить? Мы можем сделать это с помощью команды usermod.

Команда usermod

Команда usermod позволяет вам изменять аспекты учётной записи пользователя с помощью таких действий, как добавление или удаление учётной записи пользователя из групп и изменение их оболочки по умолчанию. Её также можно использовать для непосредственного управления полем GECOS.

Давайте подробнее рассмотрим строку в файле /etc/passwd для учётной записи пользователя mial. Мы будем использовать команду grep, чтобы изолировать эту строку. Это будет работать, потому что имена пользователей должны быть уникальными. Может быть только одна учётная запись пользователя с именем mial.

grep mial /etc/passwd

Отображаются поля в файле /etc/passwd. Двоеточие «:» используется в качестве разделителя полей.


Слева направо представлены следующие поля:

  • Имя пользователя учётной записи.
  • Символ «x», обозначающий пароль для этой учётной записи, хранится в зашифрованном виде в файле /etc/shadow.
  • ID пользователя для учётной записи пользователя mial.
  • ID группы для учётной записи пользователя mial.
  • Поле GECOS.
  • Путь к домашнему каталогу для учётной записи пользователя mial.
  • Оболочка, запускаемая, когда владелец учётной записи mial входит в систему.

Запятая «,» используется в качестве разделителя для значений данных в поле GECOS. Значения в поле GECOS слева направо:

  • ФИО.
  • Номер комнаты (или офиса).
  • Номер рабочего телефона.
  • Номер домашнего телефона.
  • Дополнительная информация.

Обратите внимание, что команда usermod устанавливает для всего поля GECOS новое значение, которое вы вводите. Если все, что вы указываете, - это полное имя человека, тогда в поле GECOS будет указано только полное имя. Это означает, что вы должны предоставить любые существующие значения данных, которые вы хотите сохранить.

Вот пример. Пользователь mial повышен в должности, и он собирается переехать на четвёртый этаж. У него новый номер офиса, новый номер рабочего телефона, и мы добавим его второе имя. Значение его поля «Другое» также изменится. Хотя его домашний номер телефона не изменится, мы должны указать его в строке для usermod.

Нам нужно использовать параметр -c (комментарий), и нам нужно запустить команду с помощью sudo.

sudo usermod -c "Alexey Miloserdov,405,5559654,555-7704,Linux Administrator" mial

Использование grep для сообщения о содержимом файла /etc/passwd для mial показывает нам, что были добавлены новые значения.

grep mial /etc/passwd

Связанная статья: Как в Linux добавить пользователя в группу (или вторичную группу)

Все течёт, ничего не остаётся

Неточные данные бесполезны. Когда информация о людях меняется — офис переезжает, меняются имена, названия ролей — вы можете легко обновить их метаданные, чтобы отразить текущую должность.


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *