Коли на сервері або робочій станції з’являються звичайні акаунти, важливо дати їм стільки можливостей, скільки потрібно для роботи — і не більше. У цій статті покажу, як ви можете обмежити права через sudo, увімкнути обмежені shell‑середовища і грамотно логувати linux команди, щоб завжди знати, хто і що робив. 🛡️
Що саме ми обмежуємо і навіщо
Мета — мінімізувати ризики: надмірні привілеї, випадкові злами, помилкові дії у термінал Linux. Ми сфокусуємося на трьох речах:
- Точкові привілеї через sudo (принцип найменших прав).
- Обмежені оболонки (rbash, sftp‑only, nologin) для контролю можливостей.
- Логування дій: sudo I/O, auditd і відправка команд у syslog (log-файли Linux).
How-to: мінімальні права через sudo
Найкраща практика — не робити користувача «адміном», а дати групі користувачів вузькі дозволи на конкретні команди. Так ви збережете чистоту у права доступу Linux і прозорість для аудиту.
Крок 1. Створюємо групу та додаємо користувача
Припустимо, вам треба, щоб певні люди керували лише сервісом nginx. Створіть групу й додайте користувача:
Перевірте, що користувача додано до потрібної групи (користувачі та групи Linux — це база безпеки).
Крок 2. Правила у sudoers через включення
Правильно — не редагувати /etc/sudoers напряму, а створити окремий файл у /etc/sudoers.d. Відкрийте його через visudo:
Додайте мінімально необхідні дозволи і журнали:
Збережіть файл і перевірте синтаксис (visudo зробить це автоматично). Тепер користувач із групи webops може переглядати статус nginx і перезапускати його під sudo — і більше нічого.
Крок 3. Перевіряємо дозволи
Увійдіть під користувачем або перемкніться на нього і перевірте:
А от sudo -i чи інші команди мають бути заборонені.
Обмежені shell‑середовища
Навіть без sudo користувач може нашкодити. Обмежені оболонки дають контроль: куди можна переходити, які команди запускати та як поводитися з PATH.
Варіант A: rbash (restricted bash)
rbash забороняє змінювати каталоги і PATH, виконувати команди з «/», тощо. Налаштування:
Тепер у гостя виконуються лише ті linux команди, на які є посилання в ~/bin. Спроба змінити каталог або запустити щось поза PATH — відхилиться.
Варіант B: доступ лише до SFTP через SSH
Щоб унеможливити shell взагалі, лишивши лише обмін файлами, використовуйте вбудований internal-sftp і chroot:
Користувач alex тепер матиме тільки SFTP, без доступу до оболонки.
Варіант C: nologin/false
Щоб заборонити логін повністю:
Логування команд і дій
Логи рятують, коли треба розібратися, хто що робив. Нижче — три рівні контролю.
1) Sudo I/O logging
Ми вже ввімкнули I/O‑логування у sudoers. Перевірка:
2) auditd: хто що запускав (execve)
Auditd фіксує запуск процесів на рівні ядра. Встановлення і правило для UID ≥ 1000:
3) Надсилання історії Bash у syslog
Корисно для швидкого огляду, хоча досвідчений користувач може це обійти. Додаємо у профіль користувача або глобально в /etc/profile:
Тепер повідомлення потраплятимуть до authpriv у ваші log-файли Linux (перевіряйте /var/log/auth.log або journald).
Альтернативні підходи
- SELinux/AppArmor: створюйте профілі, що обмежують доступ процесів до файлів/мережі.
- Монтования із noexec,nodev,nosuid для тимчасових каталогів зменшують вектори ескалації.
- Контейнери/подходи із sandboxing для запуску ризикових задач із мінімальним впливом на хост.
GUI-спосіб (коли доречно)
У десктопних дистрибутивах можна частково керувати правами без терміналу:
- Ubuntu/KDE: Налаштування системи → Користувачі. Вимкніть перемикач «Адміністратор», щоб користувач не мав sudo.
- openSUSE (YaST): Модуль «User and Group Management» дозволяє керувати користувачі та групи Linux. Список sudo‑прав теж доступний у YaST.
Нагадую: тонке налаштування sudo все ж краще робити через visudo. 🧰
FAQ
Чому не варто давати повний sudo?
Повний sudo = повний root. Будь-яка помилка або шкідлива дія стає критичною. Краще давати вузькі дозволи на окремі команди.
Чи можна дозволити лише apt update?
Можна, але це ризиково (оновлення змінює систему). Якщо все ж потрібно, додайте в окремий Cmnd_Alias лише read‑only операції або використовуйте централізоване оновлення.
Як протестувати правила без ризику?
Створіть тимчасового користувача, увійдіть у нову сесію, використовуйте sudo -l і намагайтеся виконати заборонені дії. Перевіряйте журнали у log-файли Linux.
Чи можна «вирватися» з rbash?
Іноді через редактори або програми з «shell‑escape». Мінімізуйте ризик: не давайте такі утиліти, контролюйте PATH, використовуйте chroot/SFTP‑only там, де треба лише передача файлів.
Як швидко відкликати доступ до sudo?
Приберіть користувача з відповідної групи і (за потреби) тимчасово перемістіть файл у /etc/sudoers.d в інше місце, перевіривши синтаксис через visudo.
Де лежать логи sudo I/O?
Каталог за замовчуванням ми задали як /var/log/sudo-io, а зведений журнал — /var/log/sudo.log. Переглядайте сесії через sudoreplay.
Порада від Kernelka
Починайте з політики: які ролі вам потрібні і які конкретні дії кожна роль повинна виконувати. Потім під ці ролі створюйте групи, правила sudo і, за потреби, обмежені оболонки. Так легше масштабувати й не плутатися в налаштуваннях.
Підсумок
- Видавайте мінімальні права через sudo і групи, використовуйте включення в /etc/sudoers.d.
- Обмежуйте оболонку: rbash, SFTP‑only або nologin — за сценарієм використання.
- Вмикайте журналювання: sudo I/O, auditd, за потреби — відсилання історії Bash у syslog.
- Перевіряйте налаштування на тестовому користувачі та стежте за log-файли Linux.
- GUI корисний для базових речей, але тонкі політики — тільки через термінал Linux.

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