bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward

Управління користувачами та групами на сервері

calendar_month September 30, 2024 schedule 11 хв. читання visibility 767 переглядів
person
Valebyte Team
Управління користувачами та групами на сервері
summarize

TL;DR

  • Застосовуйте принцип найменших привілеїв: давайте користувачам тільки мінімально необхідні права.
  • Використовуйте групи для делегування доступу до папок (наприклад, /var/www) конкретним командам.
  • Запускайте сервіси (Nginx, MySQL) від імені окремих системних користувачів для ізоляції процесів.
  • Створюйте унікальні акаунти для кожного адміна, щоб забезпечити точний аудит дій через логи.

Привіт, колеги-адміни! Сьогодні ми зануримося в одну з фундаментальних задач при роботі з будь-яким сервером, чи то ваш особистий VPS, потужний виділений сервер для хостингу або кластер у хмарі – управління користувачами та групами. Це не просто набір команд, а наріжний камінь безпеки, стабільності та ефективної експлуатації вашої системи. Правильне налаштування та адміністрування користувачів і груп дозволяє не тільки контролювати доступ до ресурсів, але й реалізовувати принцип найменших привілеїв, відстежувати дії, а також спрощувати делегування задач у команді. Ми розглянемо основні підходи до цієї задачі, їх переваги, недоліки і, звичайно, кращі практики, які допоможуть вам підтримувати порядок на сервері.

Чому управління користувачами та групами таке важливе?

An illustration showing a server rack with multiple users and groups connected to it, symbolizing user and group management and its importance for server security and access control.

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

  • Безпека: Це, мабуть, найкритичніший пункт. Обмежуючи доступ до файлів, директорій і команд тільки тим користувачам, яким він дійсно потрібен, ми мінімізуємо поверхню атаки. Принцип найменших привілеїв говорить: кожен користувач і процес повинен мати тільки ті права, які необхідні для виконання його завдань, і не більше того.
  • Розділення обов'язків: У команді розробки або системних адміністраторів різні люди відповідають за різні частини системи. Правильно налаштовані групи дозволяють легко делегувати права, наприклад, групі "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)
  • Максимальна гнучкість і контроль.
  • Ідеально для автоматизації та скриптів.
  • Низькі системні ресурси.
  • Стандартний інструмент, доступний на будь-якому Linux.
  • Високий поріг входу для новачків.
  • Вимагає запам'ятовування безлічі команд і опцій.
  • Легко допустити помилку без належного досвіду.
  • Щоденне адміністрування досвідченими фахівцями.
  • Автоматизація розгортання (Ansible, Chef, Puppet).
  • Управління VPS і виділеними серверами.
ACL (setfacl, getfacl)
  • Глибока деталізація прав доступу.
  • Дозволяє призначати права конкретним користувачам/групам поза стандартними категоріями.
  • Ускладнює загальну картину прав доступу.
  • Не всі додатки можуть коректно працювати з ACL.
  • Вимагає додаткової уваги при аудиті.
  • Складні багатокористувацькі середовища з унікальними вимогами доступу.
  • Спільна робота над проектами з різними рівнями доступу.
Графічні утиліти (Webmin, Cockpit)
  • Інтуїтивно зрозумілий інтерфейс.
  • Зручно для швидкого перегляду і простих операцій.
  • Знижує поріг входу для менш досвідчених користувачів.
  • Додаткові системні ресурси (веб-сервер, процеси).
  • Додаткова поверхня атаки.
  • Менш гнучкі для складних або нестандартних задач.
  • Не підходять для автоматизації.
  • Моніторинг і управління одним сервером.
  • Швидкі ручні зміни для невеликих команд.
  • Навчання нових співробітників.

Висновки

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

  • Для більшості завдань системного адміністратора на VPS або виділеному сервері, командний рядок залишається золотим стандартом. Вона дає максимальний контроль, гнучкість і є незамінною для автоматизації.
  • Принцип найменших привілеїв повинен бути вашим дороговказом. Ніколи не давайте більше прав, ніж необхідно.
  • Використовуйте sudo замість прямого входу під root.
  • Регулярно проводьте аудит облікових записів користувачів і груп, видаляйте невикористовувані облікові записи, перевіряйте права доступу.
  • ACLs використовуйте тільки тоді, коли стандартні права недостатні, і ви розумієте, як це вплине на складність адміністрування.
  • Графічні утиліти можуть бути хорошим доповненням для моніторингу і простих операцій, але не повинні замінювати глибоке розуміння командного рядка.

Сподіваємося, ця стаття допомогла вам глибше розібратися в тонкощах управління користувачами і групами. Пам'ятайте: порядок в облікових записах — це порядок у всій системі. Успішного адміністрування!

Масштабуйте керування користувачами з хмарними інстансами

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

Почати з хмарою →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.