Полный цикл в digital

Команда usermod управления пользователями/группами в Linux

Утилита 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

Для каждого пользователя существует два типа групп, это первичная, основная для него группа и дополнительные.

  • Первичная группа создается автоматически, когда пользователь регистрируется в системе, в большинстве случаев имеет такое же имя, как и имя пользователя. Пользователь может иметь только одну основную группу
  • Вторичные группы это дополнительные группы, к которым пользователь может быть добавлен в процессе работы, максимальное количество таких групп для пользователя - 32

Добавить пользователя в группу

sudo usermod -a -G группа имя_пользователя

Если вы не будете использовать опцию -a, и укажите только -G, то утилита затрет все группы, которые были заданы ранее, что может вызвать серьезные проблемы.

Изменить основную группу пользователя

Основная группа пользователя соответствует его имени, но мы можем изменить ее на другую:

sudo usermod -g группа имя_пользователя

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

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

grep gregory2 /etc/passwd

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

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

sudo usermod -d /home/new-dir gregory2

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

sudo usermod -m -d /home/gregory-new gregory2

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

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

nano /etc/shells

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

grep gregory2 /etc/passwd

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

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

sudo usermod -s /usr/bin/dash gregory2

Изменить UID

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

id gregory2

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

sudo usermod -u 9138 gregory2

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

sudo usermod -o -u 0 gregory2

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

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

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

sudo usermod -l gregory3 gregory2

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

sudo usermod -l gregory3 -m -d /home/gregory3 gregory2

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

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

sudo usermod --password $(openssl passwd -6 'xz3') gregory

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

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

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

sudo usermod -L gregory2

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

sudo usermod --expiredate 1 -L gregory2

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

sudo usermod --expiredate "" -U gregory2

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

sudo usermod --expiredate 2023-01-28 gregory2

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

sudo chage -l gregory2
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг