Поиск по сайту:

Как изменить данные пользователя с помощью 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

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

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

RELATED: Best Linux Laptops for Developers and Enthusiasts