Команда 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