Перейти до вмісту

Модуль 1.4: Користувачі та дозволи

Hands-On Lab Available
Ubuntu intermediate 30 min
Launch Lab ↗

Opens in Killercoda in a new tab

Основи системи | Складність: [MEDIUM] | Час: 25–30 хв

Перед початком цього модуля:


Що ви зможете робити після цього модуля

Розділ «Що ви зможете робити після цього модуля»

Після проходження цього модуля ви зможете:

  • Налаштувати користувачів, групи та права доступу до файлів за допомогою 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-------) — для приватних файлів (тільки власник).

Команди для зміни прав та власника

Розділ «Команди для зміни прав та власника»
Terminal window
# Зміна дозволів (Permissions)
chmod 755 script.sh
chmod u+x script.sh # Додати "виконання" власнику
# Зміна власника (Ownership)
sudo chown ubuntu file.txt
sudo chown ubuntu:docker file.txt # Змінити власника і групу

Спеціальні дозволи

Розділ «Спеціальні дозволи»

Якщо на папці стоїть sticky bit (як на /tmp), то видаляти файли в ній може тільки той, хто їх створив (або root). Це запобігає видаленню чужих тимчасових даних.

Дозволяють програмі запускатися з правами власника файлу (наприклад, команда passwd має SUID root, щоб звичайний юзер міг змінити свій пароль у системному файлі).


sudo (superuser do) — дозволяє виконувати команди з правами root.

  • Конфігурація лежить у /etc/sudoers.
  • Завжди використовуйте visudo для редагування цього файлу, щоб не зламати систему доступу.

У Kubernetes ви використовуєте securityContext, щоб обмежити права контейнера:

spec:
securityContext:
runAsUser: 1000
runAsNonRoot: true
fsGroup: 2000 # Важливо для прав на підключені диски

  1. Що означають цифри 644 у правах доступу?

    Відповідь Власник може читати й писати (4+2=6), група може тільки читати (4), інші — тільки читати (4).
  2. Яка команда змінює власника файлу?

    Відповідь `chown`.
  3. Навіщо потрібен sticky bit на директорії /tmp?

    Відповідь Щоб користувачі могли створювати там свої файли, але не могли видаляти файли один одного.
  4. Хто такий користувач із UID 0?

    Відповідь Це root — суперкористувач із необмеженими правами в системі.

Завдання: Навчитися працювати з правами доступу.

  1. Створіть файл:
    Terminal window
    echo "secret" > private.txt
  2. Зробіть його доступним тільки для себе:
    Terminal window
    chmod 600 private.txt
    ls -l private.txt
  3. Створіть скрипт і зробіть його виконуваним:
    Terminal window
    echo 'echo "Hello!"' > hello.sh
    chmod +x hello.sh
    ./hello.sh
  4. Перевірте свій UID та групи:
    Terminal window
    id

Критерії успіху: Ви вмієте обмежувати доступ до файлів і робити скрипти виконуваними.


  • UID/GID — це справжні ідентифікатори для Linux.
  • rwx (Read, Write, Execute) — база контролю доступу.
  • chmod міняє права, chown — власника.
  • sudo — інструмент для тимчасового отримання влади root.

Трек «Основи системи» завершено! Ви готові переходити до більш складних тем мереж та безпеки.