Модуль 1.4: Користувачі та дозволи
Основи системи | Складність:
[MEDIUM]| Час: 25–30 хв
Передумови
Розділ «Передумови»Перед початком цього модуля:
- Обов’язково: Модуль 1.3: Ієрархія файлової системи
- Бажано: Розуміння основних операцій із файлами (створення, читання).
Що ви зможете робити після цього модуля
Розділ «Що ви зможете робити після цього модуля»Після проходження цього модуля ви зможете:
- Налаштувати користувачів, групи та права доступу до файлів за допомогою chmod, chown та usermod
- Спроєктувати схему дозволів для багатокористувацького сервера з відповідним контролем доступу
- Дебажити помилки «Permission denied», простежуючи ланцюжок користувач → група → дозволи
- Пояснити setuid, setgid та sticky bit, а також наслідки кожного для безпеки
Чому цей модуль важливий
Розділ «Чому цей модуль важливий»Linux — це багатокористувацька система. Кожен процес працює від імені якогось користувача, кожен файл має власника, а права доступу контролюють, хто і що може робити.
Розуміння користувачів та дозволів критично важливе для:
- Безпеки контейнерів: контейнери працюють як користувачі; запуск від root — це ризик.
- Security Context у Kubernetes: параметри
runAsUser,runAsGroup,fsGroup. - Доступу до даних: чому мій контейнер не може записати дані на підключений диск?
- Принципу найменших привілеїв: робота під root майже ніколи не є необхідною.
Коли под Kubernetes падає з помилкою «permission denied», вам потрібно знати все про UID, GID та права доступу.
Чи знали ви?
Розділ «Чи знали ви?»-
UID 0 — це завжди root, незалежно від імені користувача. Ви можете перейменувати «root» на «адмін», але UID 0 все одно матиме повний доступ до всього. Ядро дивиться на цифри, а не на імена.
-
UID 1–999 зазвичай зарезервовані для системних акаунтів (наприклад, для nginx, postgres тощо). Звичайні користувачі (люди) починаються з UID 1000.
-
Kubernetes за замовчуванням запускає контейнери від root, якщо ви не вкажете інше. Це одна з найпоширеніших помилок безпеки в хмарі.
Користувачі та Групи
Розділ «Користувачі та Групи»Ідентифікація
Розділ «Ідентифікація»- Username: ім’я для людей (ubuntu, nginx).
- UID (User ID): номер для ядра (1000, 0).
- GID (Group ID): номер основної групи користувача.
Головні файли
Розділ «Головні файли»/etc/passwd— база даних користувачів./etc/shadow— зашифровані паролі (доступний тільки root)./etc/group— список груп та їхніх учасників.
Модель дозволів Linux (rwx)
Розділ «Модель дозволів Linux (rwx)»Коли ви робите ls -l, ви бачите рядок типу -rwxr-xr-x.
- r w x r - x r - x │ │ │ │ │ │ │ │ │ │ │ └──┴──┘ └──┴──┘ └──┴──┘ │ │ │ │ │ ВЛАСНИК ГРУПА ІНШІ │ (user) (group) (others)| Дозвіл | Для файлів | Для директорій |
|---|---|---|
| r (read) | Читати вміст | Бачити список файлів |
| w (write) | Змінювати файл | Створювати/видаляти файли |
| x (execute) | Запускати як програму | Заходити всередину (cd) |
Числова (вісімкова) нотація
Розділ «Числова (вісімкова) нотація»Кожному праву відповідає число: r=4, w=2, x=1.
- 755 (
rwxr-xr-x) — стандарт для програм (власник може все, інші — тільки читати й запускати). - 644 (
rw-r--r--) — стандарт для звичайних файлів (власник може міняти, інші — тільки читати). - 600 (
rw-------) — для приватних файлів (тільки власник).
Команди для зміни прав та власника
Розділ «Команди для зміни прав та власника»# Зміна дозволів (Permissions)chmod 755 script.shchmod u+x script.sh # Додати "виконання" власнику
# Зміна власника (Ownership)sudo chown ubuntu file.txtsudo chown ubuntu:docker file.txt # Змінити власника і групуСпеціальні дозволи
Розділ «Спеціальні дозволи»Sticky Bit (t)
Розділ «Sticky Bit (t)»Якщо на папці стоїть sticky bit (як на /tmp), то видаляти файли в ній може тільки той, хто їх створив (або root). Це запобігає видаленню чужих тимчасових даних.
SUID / SGID
Розділ «SUID / SGID»Дозволяють програмі запускатися з правами власника файлу (наприклад, команда passwd має SUID root, щоб звичайний юзер міг змінити свій пароль у системному файлі).
sudo та привілеї
Розділ «sudo та привілеї»sudo (superuser do) — дозволяє виконувати команди з правами root.
- Конфігурація лежить у
/etc/sudoers. - Завжди використовуйте
visudoдля редагування цього файлу, щоб не зламати систему доступу.
Безпека в Kubernetes
Розділ «Безпека в Kubernetes»У Kubernetes ви використовуєте securityContext, щоб обмежити права контейнера:
spec: securityContext: runAsUser: 1000 runAsNonRoot: true fsGroup: 2000 # Важливо для прав на підключені дискиТест
Розділ «Тест»-
Що означають цифри 644 у правах доступу?
Відповідь
Власник може читати й писати (4+2=6), група може тільки читати (4), інші — тільки читати (4). -
Яка команда змінює власника файлу?
Відповідь
`chown`. -
Навіщо потрібен sticky bit на директорії /tmp?
Відповідь
Щоб користувачі могли створювати там свої файли, але не могли видаляти файли один одного. -
Хто такий користувач із UID 0?
Відповідь
Це root — суперкористувач із необмеженими правами в системі.
Практична вправа
Розділ «Практична вправа»Завдання: Навчитися працювати з правами доступу.
- Створіть файл:
Terminal window echo "secret" > private.txt - Зробіть його доступним тільки для себе:
Terminal window chmod 600 private.txtls -l private.txt - Створіть скрипт і зробіть його виконуваним:
Terminal window echo 'echo "Hello!"' > hello.shchmod +x hello.sh./hello.sh - Перевірте свій UID та групи:
Terminal window id
Критерії успіху: Ви вмієте обмежувати доступ до файлів і робити скрипти виконуваними.
Підсумок
Розділ «Підсумок»- UID/GID — це справжні ідентифікатори для Linux.
- rwx (Read, Write, Execute) — база контролю доступу.
- chmod міняє права, chown — власника.
- sudo — інструмент для тимчасового отримання влади root.
Трек «Основи системи» завершено! Ви готові переходити до більш складних тем мереж та безпеки.