Керування користувачами в будь-якій операційній системі є одним із основних рутинних завдань системного адміністратора.
Для ОС на базі 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) $
Зміна користувача
Часто потрібно змінити деякі властивості існуючих користувачів на основі вимог організації, запитів користувачів або системних міграцій. Більшість із цих властивостей легко змінити, хоча нам потрібно переконатися, що це вплине на середовище користувача та доступ до файлів, якими володіє або має доступ користувач.
Оболонка за замовчуванням
За замовчуванням оболонка 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 $
Перш ніж перемикатися, переконайтеся, що новий каталог має право власності та дозволи. В іншому випадку користувач може зіткнутися з проблемами під час входу або роботи в новому домашньому каталозі.
ідентифікатор користувача
Ви можете змінити ідентифікатор існуючого користувача за допомогою:
$ 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 $
Будь ласка, зверніть увагу: якщо ваш коментар або відомості про користувача містять пробіли, візьміть це поле в лапки, як це зроблено в прикладі вище.
Логін
Ім’я користувача також можна змінити за допомогою команди 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?