JavaRush /Курси /Docker SELF /Основи прав доступу: chmod, chown, umask

Основи прав доступу: chmod, chown, umask

Docker SELF
Рівень 2 , Лекція 0
Відкрита

1. Поняття прав доступу

Коли ти працюєш з файлами чи директоріями в Linux, виникає потреба керувати доступом до них. Уяви, що ти залишив свої шкарпетки на видноті, і тепер кожен у домі може їх використовувати! Права доступу в Linux дозволяють запобігти "несанкціонованому використанню шкарпеток" (чи чогось важливішого, наприклад, твоїх скриптів). Давай почнемо розбиратися.

Кожен файл (і директорія) в Linux має три набори прав доступу, які визначають, хто може їх читати, записувати чи виконувати:

  1. Читання (r): Дозволяє переглядати вміст файлу або список файлів у директорії.
  2. Запис (w): Дозволяє змінювати вміст файлу або додавати/видаляти файли з директорії.
  3. Виконання (x): Дає можливість виконувати файл як програму (або заходити у директорію).

Трирівнева модель

Кожне право застосовується до трьох груп користувачів:

  • Власник (owner): Той, хто створив файл.
  • Група (group): Користувачі, об'єднані у групу, якій призначено файл.
  • Інші (others): Усі інші користувачі системи.

Приклад прав доступу для файлу:

-rwxr-xr--

Розшифруємо:

  • Перший символ - позначає, що це файл (для директорії буде d).
  • Перші три символи rwx — права для власника (читання, запис, виконання).
  • Наступні три символи r-x — права для групи (читання, виконання).
  • Останні три символи r-- — права для інших (тільки читання).

2. Команда chmod: управління правами доступу

Символьний формат запису

Команда chmod змінює права доступу до файлів і директорій. Символьний формат запису виглядає так:

chmod [хто][дія][права] ім'я_файла
  • Хто: u (власник), g (група), o (інші), a (всі).
  • Дія: + (додати права), - (забрати права), = (встановити права точно).
  • Права: r (читання), w (запис), x (виконання).

Приклади:


# Встановимо права на виконання для всіх
chmod a+x script.sh

# Додамо можливість запису тільки для групи
chmod g+w file.txt

# Заберемо право читання у інших
chmod o-r document.txt

Восьмеричний формат запису

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

  • r = 4
  • w = 2
  • x = 1

Права складаються:

  • rwx = 7 (4 + 2 + 1)
  • rw- = 6 (4 + 2)
  • r-- = 4

Формат запису:

chmod [число][число][число] ім'я_файла

Приклад:


# Встановимо права rwx для власника, r-x для групи, r-- для інших
chmod 754 file.sh

3. Зміна власника файлу: команда chown

Якщо тобі потрібно передати файл іншому користувачеві (або групі), допоможе команда chown.

Формат:

chown [користувач]:[група] ім'я_файлу

Приклади:


# Передача володіння користувачу user1
chown user1 myfile.txt

# Передача власника та групи
chown user1:group1 myfile.txt

# Тільки зміна групи
chown :group2 myfile.txt

4. Маска за замовчуванням: umask

Коли ви створюєте файл, права доступу для нього визначаються системою. Наприклад, права можуть бути rw-r--r--. Але звідки вони беруться? Відповідь: з команди umask.

Що таке umask?

umask визначає, які права не будуть встановлені для нових файлів.

Наприклад:

  • Базовий набір прав для файлу: 666 (немає виконання).
  • Маска: 022.
  • Підсумкові права: 644 (666 - 022).

Команди:

  • Переглянути поточну маску: umask
  • Встановити нову маску: umask 0022

Приклад:


# Встановлення маски, щоб нові файли мали rw-rw-r--
umask 0002

5. Права адміністратора та sudo

Що таке sudo?

sudo (скорочення від "superuser do") — це команда в Linux і Unix-подібних системах, яка дозволяє користувачеві виконувати команди від імені суперкористувача (root) або іншого користувача з підвищеними привілеями.

Система sudo забезпечує тимчасовий доступ до адміністративних можливостей без необхідності постійно працювати під обліковим записом root, що знижує ризики випадкової або шкідливої зміни системи.

Важливо!

Якщо дуже спростити, то sudo пишеться перед командою, яку потрібно виконати з правами адміністратора.

Як працює sudo?

Запуск команди:

Коли ви вводите команду з sudo, система перевіряє, чи має ваш користувач право виконувати команди з підвищеними привілеями.

Наприклад:

sudo apt update

Аутентифікація:

При першому використанні sudo у поточній сесії система попросить ввести пароль поточного користувача (не root).

Після успішного введення пароля система зберігає аутентифікацію на короткий проміжок часу (зазвичай 5-15 хвилин), щоб не запитувати пароль для кожної команди.

Виконання команди:

Якщо користувач має права, зазначені в конфігурації sudo, команда буде виконана з правами суперкористувача.

Основні функції та команди sudo

Запуск команди з привілеями:

sudo <команда>

Наприклад:

sudo apt install nginx

Виконання команди від імені іншого користувача: Використовуйте прапорець -u:

sudo -u <ім'я_користувача> <команда>

Наприклад:

sudo -u user1 ls /home/user1

Отримання адміністративного термінала: Запустіть оболонку з правами root:

sudo -i

або:

sudo su

Перегляд конфігурації sudo:

sudo -l

Показує команди, які поточний користувач має право виконувати.

Редагування конфігурації sudo:

sudo visudo

Ця команда відкриває файл конфігурації /etc/sudoers для безпечного редагування.

6. Приклади

Спробуємо застосувати наші знання на практиці.

Завдання 1: Управління правами з chmod

  1. Створіть файл:

    touch myfile.txt
    
  2. Встановіть для власника права на читання, запис і виконання:

    chmod u+rwx myfile.txt
    
  3. Додайте права тільки на читання для інших:

    chmod o+r myfile.txt
    
  4. Перевірте права:

    ls -l myfile.txt
    

Завдання 2: Зміна власника з chown

  1. Створіть файл:

    touch ownedfile.txt
    
  2. Змініть власника на користувача user1 (потрібні права адміністратора):

    sudo chown user1 ownedfile.txt
    
  3. Перевірте зміни:

    ls -l ownedfile.txt
    

Завдання 3: Експерименти з umask

  1. Перевірте поточну маску:

    umask
    
  2. Встановіть маску 027:

    umask 027
    
  3. Створіть новий файл:

    touch newfile.txt
    
  4. Перевірте права створеного файлу:

    ls -l newfile.txt
    

7. Типові помилки та особливості

  1. Забули sudo при зміні власника: Тільки адміністратор може змінювати власника файлу. Якщо ви отримали помилку "Operation not permitted", спробуйте додати sudo.
  2. Неправильний порядок у команді chmod: Змінили права не тому об'єкту. Переконайтеся, що вибрали потрібний файл або директорію.
  3. umask впливає тільки на нові файли: Якщо ви намагаєтеся змінити права вже існуючих файлів за допомогою umask, це не спрацює. Використовуйте chmod.

Чи знаєте ви, що права доступу в Linux настільки гнучкі, що можна створити файл, який "бачить" тільки одна людина у всьому всесвіті? Як кажуть, з великими правами приходить велика відповідальність! Тепер, озброєні chmod, chown та umask, ви готові зробити свої Linux-системи не тільки зручними, але й безпечними.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ