Usermod: Полный контроль над пользователями Linux в ваших руках

Usermod: Полный контроль над пользователями Linux в ваших руках

Вы когда-нибудь сталкивались с ситуацией, когда нужно быстро изменить права пользователя, заблокировать аккаунт или перенести его домашнюю папку? В мире Linux такие задачи решаются одной мощной командой.

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

Эта команда открывает перед вами полный контроль. Вы научитесь гибко управлять группами, меняя права доступа в несколько кликов. Сможете переименовать пользователя, не теряя его данные, или изменить его уникальный идентификатор (UID).

Заблокируйте неактивного пользователя или установите точную дату истечения срока действия его учетной записи. Перенесите домашний каталог на новый диск, сохранив все файлы и настройки. Вы даже сможете сменить командную оболочку по умолчанию.

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

Готовы стать настоящим мастером управления пользователями? Впереди вас ждут 9 практических примеров, которые раскроют всю мощь usermod. Переходите к статье и прокачайте свои навыки администрирования Linux прямо сейчас!


Управление пользователями системы и их основными и дополнительными группами – одна из важных задач при администрировании Linux. С ней отлично справляется встроенная команда usermod.

В этой статье будет рассмотрена команда usermod Linux. Сначала мы разберем её синтаксис и опции, а затем перейдем к конкретным примерам её использования, которые могут оказаться для вас полезными.


Содержание статьи

Синтаксис и опции usermod

Утилита usermod нужна для управления пользователями Linux, их основными и дополнительными группами. При ее выполнении в терминале нужно указать опции и конкретного пользователя, к которому применяются изменения. Синтаксис здесь следующий:

$ usermod опции имя_пользователя

Рассмотрим опции, которые будут использоваться в этой статье:

  • -a, --append – добавить пользователя в одну или несколько дополнительных групп. Опция будет работать только вместе с опцией -G.
  • -b, --badnames – разрешить использование имен, которые не соответствуют стандартам.
  • -d, --home – указать новое местоположение домашнего каталога пользователя. При использовании опции -m содержимое текущего домашнего каталога будет перемещено на новое место.
  • -e, --expiredate – указать дату, при наступлении которой учетная запись будет отключена. Дата вводится в формате ГГГГ-ММ-ДД. Если использовать эту опцию без указания даты, то отключение пользователя будет отменено.
  • -f, --inactive – установить количество дней для блокировки пользователя, которое должно пройти после устаревания пароля. При значении -1 опция блокировки отключается, а при значении 0 блокировка случится сразу же после устаревания.
  • -g, --gid – выбрать новую основную группу для пользователя и для файлов в его домашнем каталоге. Нужно задать имя или номер новой группы.
  • -G, --groups – указать список дополнительных групп, в которые должен входить пользователь. Между собой группы разделяются запятой. Если пользователь входит в дополнительную группу, которая не была указана в списке, то он будет из нее удалён. Но при использовании опции -a можно добавлять новые дополнительные группы, не удаляя старые.
  • -l, --login – изменить имя пользователя на новое. Данная опция не затрагивает никакие другие данные. А значит, название домашнего каталога и почты придется изменять вручную, чтобы они совпадали с новым именем пользователя.
  • -L, --lock – заблокировать пароль пользователя. Эта опция помещает символ ! (восклицательный знак) перед паролем в зашифрованном виде, отключая его. Данную опцию нельзя использовать с -p и -U.
  • -m, --move-home – изменить местоположение домашнего каталога пользователя. Опция будет работать только вместе с -d. Утилита попытается обновить права собственности на файлы и скопировать режимы, ACL и расширенные атрибуты.
  • -o, --non-unique – разрешить заменить идентификационный номер пользователя на не уникальное значение. Работает в паре с опцией -u.
  • -p, --password – изменить пароль в зашифрованном виде.
  • -R, --root – выполнить chroot в указанный каталог и использовать его вместо корневого каталога / с хранящимися в нем конфигурационными файлами.
  • -s, --shell – указать новую командную оболочку shell для пользователя. При использовании опции -s с пустым значением будет выбрана оболочка по умолчанию.
  • -u, --uid – изменить параметр UID (числовой идентификатор пользователя). Данные изменения автоматически применятся к почтовому ящику и содержимому домашнего каталога. Для остальных файлов UID придется изменять вручную.
  • -U, --unlock – разблокировать пароль пользователя. Данная опция убирает символ ! (восклицательный знак) перед паролем в зашифрованном виде, разрешая использовать его для входа. Не сработает с -p и -L.

Все доступные опции с исходным описанием для данной утилиты вы можете просмотреть в терминале, выполнив следующую команду:

man usermod

На этом вводная часть статьи завершена. Теперь самое время рассмотреть конкретные примеры использования данной утилиты для администрирования группами в Linux.

Примеры использования usermod

Разберем типовые задачи, которые могут пригодиться вам для управления учетными записями на компьютере или ноутбуке.

1. Изменить основную группу

Посмотреть список всех групп, доступных в системе, можно в файле /etc/group, например, с помощью редактора vi в терминале:

vi /etc/group
Usermod: Полный контроль над пользователями Linux в ваших руках

Для смены основной группы нужна опция -g. Синтаксис здесь следующий:

$ usermod -g имя_основной_группы имя_пользователя

Задача – изменить основную группу для пользователя test_user на test_group (GID – 1001). Так будет выглядеть команда в нашем случае:

sudo usermod -g test_group test_user
Usermod: Полный контроль над пользователями Linux в ваших руках

Затем можно проверить что изменения применились с помощью команды id. В результатах вывода команды id нам интересен пункт GID. А еще вместо названия группы можно использовать ее идентификатор GID (1001 в нашем случае):

sudo usermod -g 1001 test_user

2. Добавить в группу

Допустим пользователь gregory2 обладает ограниченными правами, ведь используется в редких случаях для удаленного управления системой. Его нужно включить в группу plugdev, чтобы иметь полный доступ ко внешним устройствам, например, подключенным по USB жестким дискам. Сначала проверим его текущие группы командой:

groups gregory2
Usermod: Полный контроль над пользователями Linux в ваших руках

С этой задачей поможет параметр -G. Но его обязательно нужно использовать вместе с -a, чтобы добавить новую группу, не удаляя старые:

sudo usermod -a -G plugdev gregory2
Usermod: Полный контроль над пользователями Linux в ваших руках

Более подробная инструкция по добавлению пользователя в группу с помощью команды usermod описана в отдельной статье. Теперь вы знаете как добавить пользователя в группу usermod.

3. Удалить из группы

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

В качестве примера возьмем уже упомянутую учетную запись gregory2. Задача – оставить ее только в группе disk, убрав cdrom и plugdev. В таком случае нужно для usermod задать опцию -G и ту группу, которая останется:

sudo usermod -G disk gregory2
Usermod: Полный контроль над пользователями Linux в ваших руках

А если вы хотите удалить все дополнительные группы для конкретного пользователя, передайте опции -G пустое значение:

sudo usermod -G "" gregory2
Usermod: Полный контроль над пользователями Linux в ваших руках

В подробностях удаление пользователя из группы мы рассказывали в отдельной статье. Помимо утилиты usermod, в ней разобрана работа с gpasswd и deluser.

4. Изменить домашнюю папку

Чтобы увидеть текущий адрес домашней папки конкретно пользователя, посмотрите содержимое файла /etc/passwd, например, с помощью утилиты grep:

grep gregory2 /etc/passwd

Конкретный каталог выводится с первым символом / (косая черта).

Usermod: Полный контроль над пользователями Linux в ваших руках

Здесь стоит отдельно рассмотреть два сценария: выбор другого местоположения для домашнего каталога и перемещение текущего домашнего каталога со всем его содержимым на новое место.

Если вы хотите просто изменить домашнюю папку, то воспользуйтесь опцией -d, указав новый адрес. Утилита автоматически создаст папку, если ее нет. В качестве примера возьмем путь /home/new-dir:

sudo usermod -d /home/new-dir gregory2
Usermod: Полный контроль над пользователями Linux в ваших руках

Проверим изменения с помощью уже упомянутой утилиты grep:

grep gregory2 /etc/passwd
Usermod: Полный контроль над пользователями Linux в ваших руках

А если вы хотите переместить домашнюю папку, сохранив все содержимое, то дополните опцию -d опцией -m, опять же, указав новый путь. В качестве примера возьмем путь /home/gregory-new:

sudo usermod -m -d /home/gregory-new gregory2
Usermod: Полный контроль над пользователями Linux в ваших руках

Проверить местоположение новой папки можно с помощью grep, а убедиться в копировании содержимого – через файловый менеджер Linux.

5. Изменить оболочку

Просмотреть весь список доступных в системе оболочек получится в файле /etc/shells. Откройте его в редакторе vi:

vi /etc/shells
Usermod: Полный контроль над пользователями Linux в ваших руках

Просмотреть оболочку конкретного пользователя можно в уже упомянутом файле /etc/passwd:

grep gregory2 /etc/passwd

Нужная информация идет после домашнего каталога.

Usermod: Полный контроль над пользователями Linux в ваших руках

Для того чтобы поменять оболочку shell используйте опцию -s. В качестве примера возьмем оболочку /usr/bin/dash:

sudo usermod -s /usr/bin/dash gregory2
Usermod: Полный контроль над пользователями Linux в ваших руках

6. Изменить UID

UID – числовой идентификатор пользователя. Для его просмотра воспользуйтесь утилитой id:

id gregory2
Usermod: Полный контроль над пользователями Linux в ваших руках

Для изменения этого значения нужна опция -u. При этом новый номер должен быть неотрицательным (число 0 допустимо) и уникальным. В качестве примера возьмем 9138:

sudo usermod -u 9138 gregory2
Usermod: Полный контроль над пользователями Linux в ваших руках

Вы можете задать неуникальный номер UID, добавив к исходной команде опцию -o. В качестве примера возьмем идентификатор 0, который по умолчанию закреплен за группой root:

sudo usermod -o -u 0 gregory2

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

7. Изменить логин

Для изменения логина (имени) пользователя предназначена опция -l. Но при этом она не затрагивает название домашнего каталога. Если вас это устраивает, то можете воспользоваться ей. Синтаксис:

$ sudo usermod -l новое_имя старое_имя

Вот как это выглядит с пользователем gregory2, которого нужно переименовать в gregory3:

sudo usermod -l gregory3 gregory2
Usermod: Полный контроль над пользователями Linux в ваших руках

Ну а еще вы можете использовать эту команду вместе с перенесением домашней папки, например, в /home/gregory3:

sudo usermod -l gregory3 -m -d /home/gregory3 gregory2
Usermod: Полный контроль над пользователями Linux в ваших руках

8. Изменить пароль

Опция --password предназначена для изменения пароля в зашифрованном виде. А значит, так просто ей воспользоваться не получится. Необходимо добавить к ней команду openssl passwd для шифрования пароля. Для того чтобы изменить пароль на xz3 выполните:

sudo usermod --password $(openssl passwd -6 'xz3') gregory
Usermod: Полный контроль над пользователями Linux в ваших руках

В результате пароль изменится сразу же после ее выполнения.

9. Заблокировать пользователя

Для блокировки пользователя пригодится опция -L, которая блокирует вход по паролю:

sudo usermod -L gregory2

При использовании этой опции перед паролем пользователя в файле /etc/shadow добавляется восклицательный знак и пользователь не сможет больше войти в систему по паролю. Однако, другие способы входа ещё доступны. Для полной блокировки учетной записи к команде нужно добавить опцию --expiredate со значением 1:

sudo usermod --expiredate 1 -L gregory2
Usermod: Полный контроль над пользователями Linux в ваших руках

Для отмены блокировки в таком случае сработает команда с опциями -U и -e с пустым значением:

sudo usermod --expiredate "" -U gregory2

А еще с помощью --expiredate можно указать точную дату для блокировки в формате ГГГГ-ММ-ДД. Вот как будет выглядеть команда для 28 января 2023 года:

sudo usermod --expiredate 2023-01-28 gregory2

Посмотреть срок действия учетной записи получится через утилиту chage с опцией -l:

sudo chage -l gregory2
Usermod: Полный контроль над пользователями Linux в ваших руках

Выводы

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

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


Кликните на изображение чтобы обновить код, если он неразборчив