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

Керування користувачами в будь-якій операційній системі є одним із основних рутинних завдань системного адміністратора.

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

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

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

Кореневий користувач

Користувач root є адміністратором ОС з усіма правами на виконання операцій. Зазвичай лише root може встановити/видалити або оновити основні системні програми та бібліотеки. Це єдиний обліковий запис користувача з загальносистемними привілеями.

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

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

Це користувачі без логінів. Вони не мають усіх привілеїв користувача root. Залежно від облікового запису вони виконують різні спеціалізовані ролі.

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

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

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

Додавання користувача

Debian/Ubuntu

У системах на базі 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)
$

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

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

  Як встановити тему значків La Capitaine, схожу на Mac, на 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
$

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

  Як грати в ігри Playstation на Linux

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

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

$ 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 Коментар

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

Будь ласка, зверніть увагу: якщо ваш коментар або відомості про користувача містять пробіли, візьміть це поле в лапки, як це зроблено в прикладі вище.

  Як використовувати Dropbox з командного рядка Linux за допомогою Dropbox Uploader

Логін

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