Дозволи на доступ до файлів у Linux / Unix: як читати, писати та змінювати

⚡ Розумний підсумок

Дозволи на читання, запис та виконання файлів у Linux та Unix контролюють, хто може читати, записувати та виконувати кожен файл, захищаючи багатокористувацьку систему через два рівні: право власності, яке призначає користувача, групу та інших, та біти прав доступу на читання, запис та виконання.

  • 👥 Форма власності: Кожен файл і каталог належить користувачеві (власнику), групі та іншим особам, яких іноді називають світом.
  • 🔑 Permissions: До кожного класу власника застосовуються три дозволи: читання (r), запис (w) та виконання (x).
  • 📃 Перелік програм: Команда ls -l показує рядок прав доступу, наприклад -rw-rw-r–, для власника, групи та світу.
  • 🔢 Абсолютний режим: Команда chmod з тризначним вісімковим числом встановлює дозволи для всіх трьох класів одночасно, наприклад, 764.
  • ➕ Символічний режим: Команда chmod з u, g, o, a та +, -, = змінює один клас власника, не торкаючись інших.
  • 🧭 Команди власності: Команда chown змінює власника та групу, тоді як chgrp змінює лише групу.
  • 🤖 Допомога ШІ: Асистенти ШІ та GitHub Copilot можуть генерувати та пояснювати команди chmod та chown.

Дозволи на доступ до файлів у Linux та Unix: як читати, писати та змінювати

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

Linux — це клон Unix, багатокористувацької операційної системи, до якої можуть одночасно отримувати доступ багато користувачів. Linux також можна використовувати на мейнфреймах та серверах без будь-яких модифікацій. Але це викликає занепокоєння щодо безпеки, оскільки небажаний або зловмисний користувач може пошкодити, змінити або видалити важливі дані. Для ефективної безпеки Linux поділяє авторизацію на два рівні:

  • Власність
  • дозвіл

Поняття прав доступу до файлів та права власності є ключовим у Linux. Тут ми пояснюємо дозволи та права власності в Linux та обговорюємо їх обидва. Почнемо з права власності.

Право власності на файл Linux

Кожному файлу та каталогу у вашій системі Unix/Linux призначається три типи власників, наведені нижче. На діаграмі нижче показано, як право власності відповідає користувачеві, групі та іншим особам.

Діаграма власності файлів у Linux, що показує користувачів, групи та інші класи дозволів

користувач

Користувач є власником файлу. За замовчуванням особа, яка створила файл, стає його власником. Отже, користувача також іноді називають власником.

Group

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

Інше

Будь-який інший користувач, який має доступ до файлу. Ця особа не створила файл і не належить до групи користувачів, якій він може належати. Практично це означає всіх інших. Отже, коли ви встановлюєте дозволи для інших, це також називається встановленням дозволів для всього світу.

Тепер виникає головне питання: як Linux розрізняє ці три типи користувачів, щоб користувач «А» не міг впливати на файл, який містить життєво важливу інформацію чи дані іншого користувача «Б»? Це як не хотіти, щоб колега, який працює над вашим... комп'ютер Linux для перегляду зображень. Саме тут і потрібні дозволи, які визначають поведінку користувача.

Давайте розберемося з системою дозволів у Linux.

Дозволи файлів Linux

Кожен файл і каталог у вашій системі Unix/Linux має наступні три дозволи, визначені для всіх трьох власників, про яких йшлося вище.

  • Читайте: Цей дозвіл надає вам право відкривати та читати файл. Дозвіл на читання каталогу дає вам можливість переглядати його вміст.
  • Написати: Дозвіл на запис надає вам право змінювати вміст файлу. Дозвіл на запис до каталогу надає вам право додавати, видаляти та перейменовувати файли, що зберігаються в каталозі. Розглянемо сценарій, коли у вас є дозвіл на запис до файлу, але немає дозволу на запис до каталогу, де зберігається цей файл. Ви зможете змінювати вміст файлу, але не зможете перейменувати, перемістити або видалити файл з каталогу.
  • Виконати: In Windows, виконуваний файл програми зазвичай має розширення «.exe», яке можна легко запустити. У Unix/Linux ви не можете запустити програму, якщо не встановлено дозвіл на виконання. Якщо дозвіл на виконання не встановлено, ви все ще можете бачити або змінювати код програми (за умови встановлення прав на читання та запис), але не запускати її.

Давайте розглянемо права доступу до файлів у Linux на прикладах. Виконання команди ls -l у терміналі дасть:

ls -l

На скріншоті нижче показано рядок дозволу у вигляді довгого списку.

Вивід команди терміналу ls -l, що показує рядок прав доступу rw-rw-r-- для файлу

Тут ми виділили '-rw-rw-r–', і цей дивний код розповідає нам про дозволи Unix, надані власнику, групі користувачів та всьому світу.

Тут перший символ «-» означає, що ми вибрали файл. Значок нижче позначає звичайний файл.

Маленька піктограма, яка вказує, що елемент у списку є звичайним файлом

В іншому випадку, якби це був каталог, відображалася б літера «d», як у списку нижче.

Список терміналу, що показує каталог, позначений початковою літерою d у рядку дозволів

Символи досить легко запам'ятовуються.

  • r = дозвіл на читання
  • w = дозвіл на запис
  • x = дозвіл на виконання
  • – = без дозволу

Розглянемо це так. Перша частина коду — «rw-». Це означає, що власник «Home» може:

  • Прочитайте файл
  • Напишіть або відредагуйте файл

Власник не може виконати файл, оскільки біт виконання встановлено на '-'. Піктограма нижче показує, що біт виконання очищено до тире.

Маленька піктограма, яка показує, що біт дозволу на виконання очищений до тире

За своєю суттю, багато дистрибутивів Linux, таких як Fedora, CentOS та Ubuntu додати користувача до групи з тим самим іменем, що й у користувача. Таким чином, користувач «tom» додається до групи з іменем «tom».

Друга частина — «rw-». Вона призначена для групи користувачів «Домашня сторінка», і учасники групи можуть:

  • Прочитайте файл
  • Напишіть або відредагуйте файл

Третя частина призначена для всього світу, тобто будь-якого користувача. Вона містить літеру «r–». Це означає, що користувач може лише:

  • Прочитайте файл

У наведеному нижче розподілі кожна частина рядка дозволу пов’язана з власником, групою та світом.

Розбиття рядка дозволів rw-rw-r-- на розділи власника, групи та світу

Зміна прав доступу до файлів/каталогів у Linux за допомогою команди 'chmod'

Припустімо, ви не хочете, щоб колега бачив ваші особисті зображення. Цього можна досягти, змінивши дозволи на доступ до файлів.

Ми можемо використовувати команду «chmod» команда, що означає «змінити режим». За допомогою цієї команди ми можемо встановити дозволи (читання, запис, виконання) для файлу або каталогу для власника, групи та світу.

Синтаксис:

chmod permissions filename

Існує два способи використання команди:

  • Абсолютний режим
  • Символічний режим

Абсолютний (числовий) режим у Linux

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

Номер Тип дозволу Symbol
0 Немає дозволу -
1 Виконати –X
2 Запис -w-
3 Виконати + Написати -wx
4 Читати г-
5 Прочитати + Виконати rx
6 Читання + Запис rw-
7 Читання + Запис + Виконання rwx

Давайте розглянемо команду chmod у дії, як показано у вікні терміналу нижче.

Термінал, у якому виконується команда chmod 764 для файлу-зразка, щоб змінити його дозволи

У вікні терміналу вище ми змінили дозволи файлу 'sample' на '764'. Абсолютний код '764' говорить наступне:

  • Власник може читати, писати та виконувати.
  • Група користувачів може читати та писати.
  • Світ може лише читати.

Це відображається як '-rwxrw-r–', як у результаті нижче.

Лістинг терміналу, що показує зразок файлу з рядком прав доступу -rwxrw-r-- після chmod 764

Ось як можна змінити права доступу користувача до файлу в Linux, призначивши абсолютне число.

Символьний режим у Linux

В абсолютному режимі ви змінюєте дозволи для всіх трьох власників. У символьному режимі ви можете змінювати дозволи певного власника. Для зміни дозволів файлів Unix використовуються математичні символи.

Operaтор Опис
+ Додає дозвіл на файл або каталог
- Вилучає дозвіл
= Встановлює дозвіл та замінює дозволи, встановлені раніше

Різні власники представлені наступним чином.

користувач Позначення
u Користувач / власник
g група
o Інше
a всі

Ми не будемо використовувати дозволи в числах, таких як 755, а символи, такі як rwx. Розглянемо приклад, наведений нижче.

Термінал використовує символічний chmod з u, g, o та +, -, = для зміни певних дозволів

Зміна власника та групи в Linux

Для зміни власника файлу або каталогу можна використовувати таку команду:

chown user filename

Якщо ви хочете змінити користувача, а також групу для файлу або каталогу, скористайтеся командою:

chown user:group filename

Давайте розглянемо це в дії, як показано нижче.

Термінал, що виконує команду chown для зміни власника та групи файлу

Якщо ви хочете змінити лише власника групи, скористайтеся командою:

chgrp group_name filename

«chgrp» означає групу змін. На скріншоті нижче показано команду chgrp у використанні.

Термінал, що виконує команду chgrp для зміни лише групового власника файлу

Чайові

  • Файл /etc/group містить усі групи, визначені в системі.
  • Ви можете скористатися командою «groups», щоб знайти всі групи, членом яких ви є, як показано нижче.

Термінал, у якому виконується команда groups для перегляду груп, до яких належить користувач

  • Ви можете використовувати команду newgrp, щоб працювати як член групи, відмінної від вашої групи за замовчуванням, як показано нижче.

Термінал, що виконує команду newgrp для перемикання на іншу групу

  • Не можна мати дві групи, які володіють одним і тим самим файлом.
  • У Linux немає вкладених груп. Одна група не може бути підгрупою іншої.
  • x — виконання каталогу означає дозвіл «вхід» до каталогу та отримання можливого доступу до підкаталогів.
  • Існують й інші дозволи, які можна встановити для файлів і каталогів, про які буде розказано в наступному розширеному посібнику.

Поширені запитання

Додайте дозвіл на виконання за допомогою chmod. Символічна форма chmod +x script.sh надає право на виконання всім, тоді як chmod u+x script.sh надає його лише власнику. Після цього ви можете запустити скрипт безпосередньо за допомогою ./script.sh з його каталогу.

umask встановлює дозволи за замовчуванням, які видаляються з новостворених файлів і каталогів. Файли починаються з 666, а каталоги - з 777, тоді значення umask є subtracted. Звичайне значення umask, рівне 022, дає файлам номер 644, а каталогам — 755. Щоб побачити поточне значення, запустіть команду umask.

Це спеціальні біти дозволів. setuid запускає програму з правами її власника, setgid запускає її з правами групи або змушує нові файли успадковувати групу каталогу, а біт sticky дозволяє лише власнику файлу видаляти його всередині спільного каталогу, такого як /tmp.

Так. Тільки користувач root або користувач, який запускає sudo, може змінити власника файлу за допомогою chown. Звичайний власник може передати свій файл групі, до якої він належить, але для перепризначення його іншому користувачеві потрібні права root з міркувань безпеки.

Ця помилка означає, що у вас немає прав на зміну файлу. Щоб запустити chmod, ви повинні бути власником файлу або root; щоб запустити chown, вам зазвичай потрібен root. Додайте перед командою sudo або перейдіть до власника файлу та спробуйте ще раз.

Використовуйте рекурсивний параметр -R. chmod -R 755 myfolder застосовує дозволи до папки та кожного файлу й підпапки в ній, а chown -R user:group myfolder робить те саме для права власності. Використовуйте -R обережно, оскільки це впливає на кожен елемент під папкою.

Помічники ШІ можуть перевести запит на кшталт «зробити цей скрипт виконуваним лише для мене» у правильну команду chmod, пояснити, що означає режим, такий як 755, і попередити про ризиковані налаштування, такі як 777. Інструменти безпеки на основі машинного навчання також позначають файли, дозволи яких виглядають небезпечно відкритими.

Так. Копілот GitHub можете запропонувати команди chmod, chown та chgrp з короткого коментаря, що описує потрібні дозволи або власника, та завершувати їх під час введення. RevПерегляньте кожну пропозицію перед її запуском, оскільки зміни дозволів та власності впливають на безпеку.

Підсумуйте цей пост за допомогою: