Как добавить, изменить и удалить пользователя в Linux?

Управление пользователями в любой операционной системе является одной из основных рутинных задач системного администратора.

Для ОС на базе Linux это обычно включает в себя создание учетных записей пользователей, изменение существующих учетных записей, например изменение их домашнего каталога, оболочки по умолчанию, блокировку/разблокировку одной или нескольких учетных записей и удаление учетных записей пользователей.

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

Типы пользователей

Корневой пользователь

Пользователь root является администратором ОС со всеми правами на выполнение операций. Обычно только root может устанавливать/удалять или обновлять базовые системные программы и библиотеки. Это единственная учетная запись пользователя с общесистемными привилегиями.

Таким образом, пользователь root является самым влиятельным пользователем системы.

Специальный пользователь

Это пользователи без логинов. У них нет всех привилегий пользователя root. В зависимости от учетной записи они берут на себя разные специализированные роли.

Они создаются автоматически во время установки любого приложения. bin, sync, lp, mail, operator, squid — вот некоторые из примеров специальных пользователей.

Обычные пользователи

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

Добавление пользователя

Дебиан/Убунту

В системе на основе Debian или Ubuntu есть несколько вариантов добавления пользователей из CLI. Первая команда — это adduser, которая представляет собой сценарий Perl и использует команду useradd в бэкэнде, использование которой мы увидим позже.

Поскольку добавление пользователя является привилегированной задачей, вам нужно будет использовать sudo в качестве префикса и имя пользователя в качестве аргумента. Другие детали могут быть указаны по запросу. За исключением имени пользователя и пароля, остальные данные являются необязательными. Мы можем убедиться, что пользователь был создан с помощью команды id.

$ sudo adduser johndoe
Adding user `johndoe' ...
Adding new group `johndoe' (1003) ...
Adding new user `johndoe' (1003) with group `johndoe' ...
Creating home directory `/home/johndoe' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for johndoe
Enter the new value, or press ENTER for the default
        Full Name []: John Doe
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y
$
$ id johndoe
uid=1003(johndoe) gid=1003(johndoe) groups=1003(johndoe)
$

CentOS/RHEL/Fedora (включая Debian/Ubuntu)

Следующая команда, useradd, будет работать в дистрибутивах ОС на основе RHEL, а также одинаково хорошо работает на хостах Ubuntu/Debian. Самый простой синтаксис (без каких-либо дополнительных опций) для создания нового пользователя:

$ sudo useradd <username>

Пример:

$ sudo useradd janedoe

Команда useradd поддерживает несколько параметров, которые можно указать при создании пользователя, наиболее распространенными из которых являются идентификатор пользователя (UID), идентификатор группы (GID), оболочка по умолчанию и домашний каталог и т. д. Один из таких примеров приведен ниже:

$ sudo useradd -s /bin/sh -d /data/newhome -c "Jane Doe" -u 1005 janedoe

Вы можете проверить вновь созданного пользователя с помощью команды id:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

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

Часто необходимо изменить некоторые свойства существующих пользователей в зависимости от требований организации, запросов пользователей или миграции системы. Большинство этих свойств легко изменить, хотя нам необходимо убедиться, как это повлияет на пользовательскую среду и доступ к файлам, которыми владеет пользователь или к которым он имеет доступ.

  Systemd изменит работу вашего домашнего каталога Linux

Оболочка по умолчанию

Оболочка по умолчанию — это оболочка CLI, созданная, когда пользователь запускает новый сеанс CLI локально или через SSH. Большинство современных систем имеют пользователя Bash по умолчанию, хотя он может варьироваться в зависимости от дистрибутива Linux или пользовательской среды. Чтобы изменить оболочку пользователя по умолчанию, используйте:

$ sudo usermod -s <shell> <username>

Пример:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/sh
$ sudo usermod -s /bin/bash janedoe
$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/bash
$

Как видно из приведенного выше вывода, оболочка была изменена с /bin/sh на /bin/bash для пользователя janedoe.

Домашний каталог

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

$ sudo usermod -d <new_directory_path> <username>

В приведенном ниже примере домашний каталог пользователя janedoe был изменен на /data/janedoe:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/bash
$ sudo usermod -d /data/janedoe janedoe
$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$

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

  Измените рабочий процесс Wireshark с помощью Brim в Linux

ID пользователя

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

$ sudo usermod -u <new_uid> <username>

Пример:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$ sudo usermod -u 1010 janedoe
$ getent passwd janedoe
janedoe:x:1010:1005::/data/janedoe:/bin/bash
$

Опять же, изменение UID изменяет то, как файловая система Linux сопоставляет владельца и права доступа к файлу или каталогу. Убедитесь, что домашний каталог пользователя и его содержимое, а также все другие файлы в любом месте системы, изначально принадлежавшие пользователю (со старым UID), изменены на сопоставленные UID. Невыполнение этого требования может вызвать проблемы в сеансе CLI и доступе пользователя к файлам.

Группа по умолчанию

Группа по умолчанию обычно представляет собой идентификатор группы пользователя по умолчанию, который создается во время создания пользователя, если не указан другой GID. Linux также позволяет вам изменить группу пользователя по умолчанию с помощью команды usermod. Вот синтаксис для использования:

$ sudo usermod -g <new_gid or group_name> <username>

Вот один пример:

$ getent passwd janedoe
janedoe:x:1010:1005::/data/janedoe:/bin/bash
$ sudo usermod -g 1001 janedoe
$ getent passwd janedoe
janedoe:x:1010:1001::/data/janedoe:/bin/bash
$

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

Добавление/удаление групп

Помимо группы по умолчанию, пользователь в Linux может быть частью дополнительных групп. Мы всегда можем добавить или удалить дополнительные группы, к которым принадлежит пользователь, с помощью команды usermod.

$ sudo usermod -a -G <group_id or group_name> <username>

Пример:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo usermod -a -G docker janedoe
$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker)
$

Точно так же, чтобы удалить пользователя из одной из дополнительных групп, используйте команду gpasswd, как показано ниже:

$ sudo gpasswd -d <username> <groupname>

Пример:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker)
$ sudo gpasswd -d janedoe docker
Removing user janedoe from group docker
$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

ГЕКОС Комментарий

Поле GECOS в /etc/passwd содержит информацию о пользователе или комментарий. Мы можем изменить эту информацию для существующего пользователя следующим образом:

$ sudo usermod -c <comment> <username>

Пример:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$ sudo usermod -c "Jane Doe - System Admin" janedoe
$ getent passwd janedoe
janedoe:x:1005:1005:Jane Doe - System Admin:/data/janedoe:/bin/bash
$

Обратите внимание: если ваш комментарий или информация о пользователе содержат пробелы, заключите это поле в кавычки, как это сделано в приведенном выше примере.

  Как использовать команду whois в Linux

Логин

Логин пользователя также можно изменить с помощью команды usermod с флагом -l:

$ sudo usermod -l <new_username> <old_username>

Пример:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo usermod -l jane_doe janedoe
$ id jane_doe
uid=1005(jane_doe) gid=1005(janedoe) groups=1005(janedoe)
$

Не забудьте обновить ссылки на пользователей в соответствии с новым именем, где бы оно ни использовалось. Даже в таких командах, как id, нужно указывать новое имя пользователя.

Удаление пользователя

Пользователь может быть удален из Linux с помощью команды userdel.

$ sudo userdel <username>

Пример:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo userdel janedoe
$ id janedoe
id: ‘janedoe’: no such user
$

Чтобы удалить пользователя вместе с его домашним каталогом и почтовым ящиком, также добавьте флаг -r.

$ sudo userdel -r <username>

Специально для систем на основе Ubuntu вы также можете использовать команду deluser для удаления пользователя:

$ sudo deluser <username>

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

$ sudo deluser --remove-home <username>

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

$ man adduser
$ man useradd
$ man usermod
$ man deluser
$ man userdel

Вывод

В этой статье показаны различные аспекты управления пользователями в системе Linux. Это включает в себя объяснение различных категорий пользователей и способов их добавления и удаления. Он также охватывает различные параметры, которые помогают изменить параметры существующего пользователя. Хотя он не охватывает все возможности, поддерживаемые различными командами, он охватывает множество общих задач администрирования, с которыми системный администратор сталкивается в повседневной работе.

Вам также может быть интересно прочитать: Как удалить файлы и каталоги в Linux?