Привіт, колеги-адміни! Сьогодні ми зануримося в одну з фундаментальних задач при роботі з будь-яким сервером, чи то ваш особистий VPS, потужний виділений сервер для хостингу або кластер у хмарі – управління користувачами та групами. Це не просто набір команд, а наріжний камінь безпеки, стабільності та ефективної експлуатації вашої системи. Правильне налаштування та адміністрування користувачів і груп дозволяє не тільки контролювати доступ до ресурсів, але й реалізовувати принцип найменших привілеїв, відстежувати дії, а також спрощувати делегування задач у команді. Ми розглянемо основні підходи до цієї задачі, їх переваги, недоліки і, звичайно, кращі практики, які допоможуть вам підтримувати порядок на сервері.
Чому управління користувачами та групами таке важливе?
Перш ніж ми перейдемо до команд і інструментів, давайте закріпимо, чому цей аспект адміністрування заслуговує на особливу увагу. Для нас, людей, які щодня працюють з серверами, це очевидно, але іноді корисно освіжити в пам'яті основні принципи:
- Безпека: Це, мабуть, найкритичніший пункт. Обмежуючи доступ до файлів, директорій і команд тільки тим користувачам, яким він дійсно потрібен, ми мінімізуємо поверхню атаки. Принцип найменших привілеїв говорить: кожен користувач і процес повинен мати тільки ті права, які необхідні для виконання його завдань, і не більше того.
- Розділення обов'язків: У команді розробки або системних адміністраторів різні люди відповідають за різні частини системи. Правильно налаштовані групи дозволяють легко делегувати права, наприклад, групі "webdevs" дати доступ до директорії
/var/www, а групі "dba" — до баз даних, не даючи їм зайвих прав на решту системи. - Аудит та звітність: Коли кожен користувач має свій обліковий запис, набагато простіше відстежувати, хто і коли виконав певні дії. Це неоціненно при розслідуванні інцидентів безпеки або просто при аналізі логів.
- Організація і порядок: Підтримка чистоти в облікових записах користувачів і групах допомагає уникнути хаосу, коли на сервері накопичуються давно не використовувані акаунти або групи з надмірними правами.
- Ізоляція процесів: Кожен додаток або сервіс часто запускається від імені окремого користувача (наприклад,
nginx,mysql). Це забезпечує ізоляцію, так що якщо один сервіс буде скомпрометовано, зловмисник не отримає повний контроль над системою.
Основи: Користувачі, Групи та Права Доступу в Linux
Для ефективного управління потрібно чітко розуміти базові концепції Linux:
Користувачі (Users)
Кожен користувач в Linux має унікальний ідентифікатор (UID - User ID), який система використовує для визначення власника файлів і процесів. Крім імені користувача, з кожним обліковим записом пов'язані:
- UID: Унікальний числовий ідентифікатор.
- Домашня директорія: Місце, де зберігаються особисті файли користувача (наприклад,
/home/username). - Оболонка (Shell): Програма, яка запускається при вході користувача (наприклад,
/bin/bash,/bin/sh,/sbin/nologin). - Основна група (Primary Group): Група, до якої користувач належить за замовчуванням, і яка призначається новим файлам, створеним цим користувачем.
- Додаткові групи (Secondary Groups): Інші групи, до яких користувач може належати для отримання додаткових прав доступу.
Групи (Groups)
Групи — це спосіб об'єднати користувачів для спрощення управління правами доступу. Кожен файл і директорія в Linux, крім власника, має і групу-власника. Члени цієї групи можуть отримувати певні права доступу до файлу або директорії. У кожної групи є свій унікальний ідентифікатор (GID - Group ID).
Права Доступу (Permissions)
Права доступу визначають, що користувачі та групи можуть робити з файлами і директоріями. Вони діляться на три типи:
- Читання (Read, r): Перегляд вмісту файлу або списку файлів у директорії.
- Запис (Write, w): Зміна файлу або створення/видалення файлів у директорії.
- Виконання (Execute, x): Запуск файлу як програми або вхід в директорію.
Ці права призначаються для трьох категорій:
- Власник (User): Сам користувач, який володіє файлом/директорією.
- Група (Group): Група, якій належить файл/директорія.
- Решта (Others): Всі інші користувачі системи.
Права часто представляються у вісімковій системі (наприклад, 755, 644), де кожна цифра відповідає правам для власника, групи та інших, відповідно.
Потрібен надійний сервер для управління користувачами та групами?
Забезпечте стабільну роботу вашої системи з нашими VPS-планами. Ідеально для ефективного управління ресурсами. — from €4.49/mo.
Вибрати VPS-план →Управління користувачами та групами через командний рядок
Командний рядок — це наш основний інструмент, найбільш гнучкий і потужний спосіб управління сервером. Досвідчений сисадмін знає, що володіння цими командами — запорука ефективності та контролю.
Створення і видалення користувачів
У різних дистрибутивах Linux для створення користувачів можуть використовуватися дві основні утиліти: useradd і adduser. Важливо розуміти їх відмінності.
useradd — низькорівнева утиліта
useradd — це низькорівнева утиліта, яка не створює домашню директорію за замовчуванням і не запитує пароль. Вона більше підходить для скриптів або коли ви хочете повний контроль над кожним аспектом створення користувача.
sudo useradd -m -g users -G sudo,www-data -s /bin/bash -c "John Doe" john_doe
sudo passwd john_doe
Тут:
-m: Створити домашню директорію користувача, якщо вона не існує.-g users: Встановитиusersяк основну групу користувача.-G sudo,www-data: Додати користувача в додаткові групиsudoіwww-data.-s /bin/bash: Встановити/bin/bashв якості оболонки за замовчуванням.-c "John Doe": Додати коментар (повне ім'я).john_doe: Ім'я нового користувача.
Після створення користувача, обов'язково встановіть йому пароль за допомогою passwd.
adduser — скрипт-обгортка для зручності
adduser — це скрипт (зазвичай на Perl), який є більш "дружньою" обгорткою навколо useradd. Він інтерактивно запитує необхідні дані (пароль, повне ім'я і т.д.) і автоматично створює домашню директорію і додає користувача в його основну групу.
sudo adduser newuser
Ця команда послідовно задасть вам питання про пароль, повне ім'я та іншу інформацію. Для багатьох випадків ручного створення користувачів, adduser є кращим вибором.
Модифікація користувачів з usermod
Для зміни параметрів існуючого користувача використовується команда usermod. Наприклад, щоб додати користувача в додаткову групу:
sudo usermod -aG docker newuser
Тут -aG означає "append to Group" (додати до групи), щоб не перезаписувати існуючі додаткові групи користувача.
Інші корисні опції usermod:
-s /sbin/nologin: Змінити оболонку наnologin, щоб користувач не міг увійти в систему (корисно для системних акаунтів).-L: Заблокувати обліковий запис.-U: Розблокувати обліковий запис.-e YYYY-MM-DD: Встановити дату закінчення терміну дії облікового запису.-d /new/home/dir -m: Змінити домашню директорію користувача, перемістивши її вміст.
Видалення користувачів
Для видалення користувачів також є дві команди:
userdel username: Видаляє обліковий запис користувача, але залишає його домашню директорію і поштову скриньку.userdel -r username: Видаляє обліковий запис користувача, а також його домашню директорію і поштову скриньку. Це рекомендується робити для повного видалення.
sudo userdel -r olduser
Якщо ви використовували adduser, то є відповідна команда deluser, яка також підтримує опцію видалення домашньої директорії:
sudo deluser --remove-home olduser
Управління групами
Групи створюються і видаляються аналогічно користувачам.
Створення груп
Для створення групи використовуйте groupadd або addgroup:
sudo groupadd developers
sudo addgroup testers
addgroup часто є символічним посиланням на groupadd або простим скриптом, який виконує groupadd з розумними значеннями за замовчуванням.
Модифікація груп
Для зміни імені групи або GID використовуйте groupmod:
sudo groupmod -n new_devs developers
Ця команда перейменує групу developers в new_devs.
Видалення груп
Для видалення групи використовуйте groupdel або delgroup:
sudo groupdel testers
sudo delgroup oldgroup
Важливо: не можна видалити основну групу користувача, поки він до неї належить. Спочатку потрібно перепризначити користувача в іншу основну групу або видалити користувача.
Перевірка користувачів і груп
Щоб дізнатися, до яких груп належить користувач, використовуйте команди groups або id:
groups newuser
id newuser
Налаштування прав доступу: chmod, chown, umask
Як ми вже згадували, правильні права доступу — це основа безпеки. Ось основні команди для їх налаштування.
chmod — зміна прав доступу
Команда chmod використовується для зміни прав доступу до файлів і директорій. Ви можете використовувати символічний або вісімковий режим.
Вісімковий режим
Це найпоширеніший спосіб. Кожна цифра (від 0 до 7) представляє собою суму прав:
4: Читання (r)2: Запис (w)1: Виконання (x)
Приклади:
7(4+2+1): rwx (читання, запис, виконання)6(4+2): rw- (читання, запис)5(4+1): r-x (читання, виконання)0: --- (немає прав)
Права задаються для власника, групи та інших відповідно:
# Дати власнику повні права, групі - читання і виконання, іншим - тільки читання
sudo chmod 754 my_script.sh
# Зробити файл доступним лише для читання та запису власником
sudo chmod 600 sensitive_file.conf
# Для директорій: дати власнику повні права, групі та іншим - читання та виконання
# (щоб можна було увійти в директорію та переглянути її вміст)
sudo chmod 755 my_directory/
Для рекурсивного застосування прав до вмісту директорії використовуйте опцію -R:
sudo chmod -R 755 /var/www/html/
Символічний режим
Символічний режим більш інтуїтивний для додавання або видалення конкретних прав:
u: власник (user)g: група (group)o: інші (others)a: всі (all)+: додати право-: видалити право=: встановити право (перезаписуючи існуючі)
# Додати право на виконання для власника та групи
chmod ug+x my_script.sh
# Видалити право на запис для інших
chmod o-w sensitive_file.conf
# Встановити права rwx для власника, r-x для групи та інших
chmod u=rwx,go=rx my_directory/
chown і chgrp — зміна власника та групи
Команда chown змінює власника файлу або директорії, а chgrp — групу-власника.
# Змінити власника файлу на 'newuser'
sudo chown newuser file.txt
# Змінити групу-власника файлу на 'webdevs'
sudo chgrp webdevs file.txt
# Змінити і власника, і групу-власника
sudo chown newuser:webdevs file.txt
# Рекурсивно змінити власника та групу для директорії
sudo chown -R www-data:www-data /var/www/html/
umask — маска створення файлів
umask визначає права за замовчуванням для нових створюваних файлів та директорій. Це маска, яка віднімається від повних прав. За замовчуванням для файлів це 666 (rw-rw-rw-) і для директорій 777 (rwxrwxrwx).
Типове значення umask для звичайних користувачів — 0022 (або 022). Це означає, що права w для групи та інших будуть відняті від дефолтних прав.
- Для файлів:
666 - 022 = 644(rw-r--r--) - Для директорій:
777 - 022 = 755(rwxr-xr-x)
Ви можете перевірити свій поточний umask:
umask
І встановити його, наприклад, в .bashrc або .profile:
umask 002
002 дасть права 664 для файлів (rw-rw-r--) і 775 для директорій (rwxrwxr-x), що зручно для спільної роботи в групах.
Розширені можливості: sudo і ACL
sudo — делегування привілеїв
Використання root-акаунта для повсякденних задач — погана практика. Замість цього ми використовуємо sudo для виконання команд з підвищеними привілеями. Конфігурація sudo зберігається у файлі /etc/sudoers, який редагується виключно через команду visudo.
sudo visudo
Приклад рядка в sudoers:
# Користувач 'adminuser' може виконувати всі команди без пароля
adminuser ALL=(ALL) NOPASSWD: ALL
# Група 'sysadmins' може виконувати всі команди з паролем
%sysadmins ALL=(ALL) ALL
Будьте вкрай обережні при редагуванні sudoers, синтаксичні помилки можуть заблокувати вам доступ до адміністративних функцій!
ACL (Access Control Lists) — детальний контроль
Якщо стандартні права Linux (власник, група, інші) не дають достатньої гнучкості, на допомогу приходять ACL. Вони дозволяють призначати права конкретним користувачам або групам, які не є власником або основною групою файлу/директорії.
Для роботи з ACL потрібні утиліти getfacl (подивитися ACL) і setfacl (встановити ACL).
# Встановити права на читання та запис для користувача 'developer' на файл 'project.log'
sudo setfacl -m u:developer:rw project.log
# Встановити права на читання для групи 'auditors' на директорію 'reports' та її вміст
sudo setfacl -R -m g:auditors:r reports/
Переглянути ACL для файлу
getfacl project.log
ACL — потужний інструмент, але його використання ускладнює адміністрування, тому застосовуйте його лише тоді, коли це дійсно необхідно.
Графічні утиліти: Webmin та Cockpit
Хоча командний рядок — наш найкращий друг, в деяких випадках графічні утиліти можуть бути корисними, особливо для швидкого моніторингу, менш досвідчених колег або коли потрібно керувати безліччю аспектів сервера через єдиний інтерфейс.
-
Webmin: Це повноцінна веб-панель для адміністрування майже всіх аспектів Linux-сервера, включаючи користувачів і групи. Вона надає зручний GUI для створення, зміни та видалення облікових записів, налаштування паролів, груп і прав доступу.
Webmin може бути корисним для швидкого розгортання або для команд, де не всі володіють глибокими знаннями CLI, але для серйозних, автоматизованих задач він, як правило, надлишковий.
- Cockpit: Більш сучасна та легковажна веб-консоль, орієнтована на моніторинг, управління контейнерами, мережами і, звичайно, користувачами. Вона інтегрується з системними компонентами і забезпечує більш "рідний" досвід адміністрування, ніж Webmin. Cockpit відмінно підходить для управління окремими серверами або невеликими кластерами.
Переваги GUI: інтуїтивність, візуалізація, спрощення рутинних операцій для деяких користувачів. Недоліки GUI: можуть бути менш гнучкими для складних сценаріїв, додають додаткову поверхню атаки, не завжди підходять для автоматизації.
Порівняння підходів
Давайте зведемо переваги та недоліки різних методів управління в зручну таблицю.
| Метод | Переваги | Недоліки | Типові сценарії використання |
|---|---|---|---|
| Командний рядок (useradd, groupadd, usermod, chmod, chown) |
|
|
|
| ACL (setfacl, getfacl) |
|
|
|
| Графічні утиліти (Webmin, Cockpit) |
|
|
|
Висновки
Управління користувачами і групами на сервері — це не одноразове завдання, а безперервний процес, що вимагає уваги і дотримання кращих практик. Вибір інструменту залежить від ваших завдань, рівня досвіду і специфіки оточення:
- Для більшості завдань системного адміністратора на VPS або виділеному сервері, командний рядок залишається золотим стандартом. Вона дає максимальний контроль, гнучкість і є незамінною для автоматизації.
- Принцип найменших привілеїв повинен бути вашим дороговказом. Ніколи не давайте більше прав, ніж необхідно.
- Використовуйте
sudoзамість прямого входу підroot. - Регулярно проводьте аудит облікових записів користувачів і груп, видаляйте невикористовувані облікові записи, перевіряйте права доступу.
- ACLs використовуйте тільки тоді, коли стандартні права недостатні, і ви розумієте, як це вплине на складність адміністрування.
- Графічні утиліти можуть бути хорошим доповненням для моніторингу і простих операцій, але не повинні замінювати глибоке розуміння командного рядка.
Сподіваємося, ця стаття допомогла вам глибше розібратися в тонкощах управління користувачами і групами. Пам'ятайте: порядок в облікових записах — це порядок у всій системі. Успішного адміністрування!
Масштабуйте керування користувачами з хмарними інстансами
Наші хмарні інстанси пропонують гнучкість і продуктивність, необхідні для зростання вашого проекту. Керуйте групами без обмежень.
Почати з хмарою →