Команда chmod: Ваш путівник з керування правами доступу
У світі Linux та серверного адміністрування безпека та контроль є ключовими. Одним з найперших і найважливіших інструментів, який ви маєте освоїти, є команда chmod. Якщо ви вже знайомі з основами роботи в терміналі, про які ми говорили у нашій попередній статті про інтерфейс командного рядка, то настав час зробити наступний крок.
Ця стаття — ваш детальний путівник по команді chmod. Ми розберемо, що таке права доступу, як їх читати та, найголовніше, як їх змінювати за допомогою двох потужних режимів: символьного та цифрового.
Що таке права доступу до файлів?
Кожен файл і кожна папка у Linux-подібних системах має набір прапорів, які визначають, хто і що може з ними робити. Це і є права доступу. Щоб їх побачити, достатньо виконати команду ls -l у вашому терміналі.
$ ls -l -rwxr-xr-- 1 user group 4096 лип 27 11:00 script.sh drwxr-xr-x 2 user group 4096 лип 27 11:02 my_folder
Таємничий рядок -rwxr-xr-- на початку і є візуальним представленням прав. Він складається з 10 символів, які розбиваються на чотири частини:
- Тип файлу (1-й символ):
-для файлу,dдля директорії (папки). - Власник (Owner/User) (2-4 символи): Права для користувача, який створив файл.
- Група (Group) (5-7 символи): Права для користувачів, що належать до групи файлу.
- Інші (Others) (8-10 символи): Права для всіх інших користувачів системи.
Самі права позначаються трьома літерами — rwx:
r(Read) — право на читання вмісту файлу або перегляд списку файлів у папці.w(Write) — право на зміну (запис) файлу або створення/видалення файлів у папці.x(Execute) — право на виконання файлу (якщо це скрипт або програма) або вхід до папки.
Два режими `chmod`: Символьний та Цифровий
Команда chmod (від “change mode“) дозволяє змінювати ці права. Вона має два основні синтаксиси, і розуміння обох робить вас гнучким адміністратором.
1. Символьний режим: інтуїтивно зрозумілий
Цей режим використовує літери для позначення користувачів (u, g, o, a) та оператори (+, -, =) для зміни прав (r, w, x).
- Користувачі:
u(user/власник),g(group/група),o(others/інші),a(all/всі). - Оператори:
+(додати право),-(забрати право),=(встановити конкретні права, перезаписавши старі).
Приклади символьного режиму:
Додати право на виконання файлу script.sh для власника:
chmod u+x script.sh
Забрати право на запис у всіх, крім власника, для файлу config.txt:
chmod go-w config.txt
Встановити права “читання та запис” для власника, і “тільки читання” для групи та інших:
chmod u=rw,go=r config.txt
2. Цифровий (вісімковий) режим: швидкий та універсальний
Це найпопулярніший спосіб використання chmod. Він базується на числах, де кожне право має свою вагу:
r(читання) = 4w(запис) = 2x(виконання) = 1
Щоб отримати потрібну комбінацію, ви просто додаєте ці числа. Наприклад, rwx = 4+2+1 = 7. Права задаються трьома цифрами — для власника, групи та інших відповідно.
| Число | Права (rwx) | Опис |
|---|---|---|
| 0 | --- |
Жодних прав |
| 1 | --x |
Тільки виконання |
| 2 | -w- | Тільки запис |
| 3 | -wx | Запис та виконання (2+1) |
| 4 | r-- |
Тільки читання |
| 5 | r-x | Читання та виконання (4+1) |
| 6 | rw- | Читання та запис (4+2) |
| 7 | rwx | Повні права (4+2+1) |
Популярні комбінації в цифровому режимі:
chmod 755 my_script.sh — Найчастіший варіант для скриптів та папок.
- 7 (Власник):
rwx— повні права. - 5 (Група):
r-x— читання та виконання. - 5 (Інші):
r-x— читання та виконання.
chmod 644 index.html — Стандарт для веб-файлів, які не є виконуваними.
- 6 (Власник):
rw-— читання та запис. - 4 (Група):
r--— тільки читання. - 4 (Інші):
r--— тільки читання.
Ще один практичний приклад: Кроки для розрахунку прав кожної категорії користувачів.
Щоб обчислити права та підсумкову цифру, потрібно провести невелику математичну операцію підсумовування:
- Якщо вам потрібно встановити права на читання та запис для власника, тоді: Читання (4) + Запис (2) =
6 - Якщо вам потрібно встановити права на читання та виконання для групи, вважаємо: Читання (4) + Виконання (1) =
5 - Якщо вам потрібно встановити право на читання для інших, тоді: Читання (4) =
4
Заджойним підсумкові значення: у прикладі (для власника 6, для групи 5, а інших 4) підсумкове значення буде = 654.
💡 Просунутий рівень: Рекурсивна зміна прав
Іноді потрібно змінити права для папки та всіх файлів і підпапок всередині неї. Для цього використовується прапор -R (рекурсивно).
УВАГА: Використовуйте цю опцію з великою обережністю, оскільки масова зміна прав може порушити роботу системи або створити загрозу безпеці.
Наприклад, встановити права 755 для папки public_html та всього її вмісту:
chmod -R 755 public_html/
Правильною практикою є встановлення прав 755 для папок і 644 для файлів всередині них, що робиться за допомогою комбінації команд find та chmod.
Чому важливо правильно налаштовувати права?
Грамотне використання chmod дає вам кілька ключових переваг:
- Безпека: Ви обмежуєте доступ до чутливих файлів (наприклад, файлів конфігурації з паролями), дозволяючи їх читати лише власнику.
- Контроль: Ви чітко визначаєте, хто може змінювати файли, запобігаючи випадковим або зловмисним редагуванням.
- Функціональність: Веб-сервери та скрипти просто не працюватимуть без коректно виставлених прав на виконання та читання.
- Порядок: Це основа правильної організації файлової структури у багатокористувацьких системах.
Замість висновку
Команда chmod — це не просто утиліта, це фундаментальний механізм контролю у Linux. Оволодівши символьним та цифровим режимами, ви зможете гнучко та ефективно керувати безпекою ваших файлів та директорій. Почніть з простих прикладів, як-от chmod 644 для текстових файлів та chmod 755 для скриптів, і поступово до вас прийде відчуття повного контролю над своєю системою.