Як додати, змінити та видалити користувача в Linux?

Управління обліковими записами користувачів є ключовим аспектом адміністрування будь-якої операційної системи, і Linux не є винятком. Системні адміністратори регулярно виконують такі завдання, як створення, модифікація, блокування та видалення облікових записів.

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

Типи користувачів в Linux

Користувач Root

Користувач root – це адміністратор системи з повним набором прав доступу. Зазвичай тільки root має можливість встановлювати, видаляти або оновлювати основне системне програмне забезпечення. Цей обліковий запис має найвищі системні привілеї.

Отже, користувач root є найвпливовішим користувачем в операційній системі.

Спеціальні користувачі

Ці облікові записи призначені для виконання спеціалізованих завдань і не мають можливості прямого входу в систему. Вони створюються автоматично під час інсталяції програм та мають різні рівні привілеїв. Приклади таких користувачів: bin, sync, lp, mail, operator, squid.

Звичайні користувачі

Звичайні користувачі мають обмежені привілеї, які зазвичай обмежуються їхнім власним домашнім каталогом. Вони не можуть виконувати системні операції або встановлювати програмне забезпечення без використання команди sudo, яка дозволяє отримувати тимчасові адміністративні права.

Створення користувача

Debian/Ubuntu

У системах Debian та Ubuntu є декілька способів створення користувачів через командний рядок. Команда `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 janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

Зміна користувача

Часто виникає потреба змінити певні параметри користувачів з огляду на потреби організації, запити користувачів або системні міграції. Більшість цих змін є простими, але важливо враховувати їхній вплив на середовище користувача та доступ до файлів.

Оболонка за замовчуванням

Оболонка командного рядка створюється, коли користувач починає сеанс локально або через 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
$

У прикладі вище оболонка користувача janedoe була змінена з /bin/sh на /bin/bash.

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

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

$ 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
$

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

Ідентифікатор користувача

Ідентифікатор існуючого користувача можна змінити за допомогою:

$ 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. Інакше виникнуть проблеми з доступом до файлів.

Група за замовчуванням

Група за замовчуванням – це група, що створюється під час створення користувача, якщо не вказано інше. 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
$

Так само переконайтеся, що новий GID встановлено для домашнього каталогу користувача та всіх відповідних файлів.

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

Користувач 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 коментар

Поле 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
$

Якщо коментар містить пробіли, потрібно використовувати лапки.

Ім’я користувача

Ім’я користувача можна змінити за допомогою `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)
$

Пам’ятайте, що потрібно оновити всі посилання на користувача.

Видалення користувача

Користувача можна видалити за допомогою команди `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 сторінках:

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

Висновок

У цій статті розглянуті основні аспекти управління користувачами в Linux, включаючи типи облікових записів, їх створення, зміну та видалення. Описано основні параметри, які дозволяють налаштувати обліковий запис користувача. Стаття не охоплює всіх можливостей, які підтримують ці команди, але охоплює основні завдання адміністрування, з якими стикаються системні адміністратори в повсякденній роботі.

Вам також може бути цікаво прочитати: Як видалити файли та каталоги в Linux?