Рубріки: Теорія

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

Сергій Бондаренко

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

Що таке CHMОD?

Парадигма будь-якої операційної системи будується із сукупності правил, що регламентують порядок звернення до об’єктів інформації. Механізм дозволів Linux був винайдений ще 1970-х роках. У Unix-системах функція розмежування доступу реалізована у вигляді дев’яти бітів режиму. З її допомогою описується, власники яких облікових записів можуть читати вміст файлів, виконувати їх зміну (редагувати) і запускати файли.

Набір цих дев’яти і трьох бітів, відповідальних за можливість запуску виконуваних файлів, складають код режиму доступу до файлу. Ці 12 бітів режиму записані у 16-бітове поле індексного дескриптора. Там же зберігаються чотири додаткові біти, які визначають тип файлу. Ці чотири біти не можуть бути змінені – вони прописуються відразу при створенні файлів. Команда chmod (скорочення від англійського change mode – змінити режим) дає можливість власнику файлу (або суперкористувачу) відредагувати вміст бітів режиму – змінити правила доступу до даних. Вона включена до серії стандартів POSIX, пакету GNU Core Utilities.

Команда chmod представлена такою конструкцією:

chmod [параметри] задання_прав_доступу ім'я_файлу

Існують два варіанти опису прав доступу – символьний і за допомогою вісімкової системи позначення (використовуючи числа в діапазоні 0…7).

Параметри chmod

Параметри chmod:

-c – відобразити відомості про будь-які зміни

-f – не виводити на екран помилки

-v – показати повну інформацію

-R – використовувати рекурсивну обробку даних

–help – відобразити документацію

–version – відомості про версію

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

  • власник даних (тобто той, хто їх створив)
  • група з користувачами, які входять до тієї ж групи, що і власник даних
  • інші користувачі

Основні групи прийнято позначати першими літерами: u – user, g – group и o – other.

Поділяють чотири основні рівні доступу, що призначаються файлам і директоріям:

  • r – читання;
  • w – запис;
  • x – виконання;
  • s – запуск від імені суперкористувача (додатковий);

Зміна прав за допомогою символьної нотації та чисел

Розглянемо приклад опису правил доступу до даних. Припустимо, ви є власником файла з ім’ям –  ім’я_файлу. Потрібно встановити такі права доступу:

  • для користувача user дозволено читання (read), запис (write) та можливість його запуску (execute);
  • учасники певної групи (group) мають можливість читання файлу (read), і навіть його запуску (execute);
  • інші користувачі (others) мають доступ лише на читання файла (read).

У цьому випадку слід використати команду виду:

chmod u=rwx,g=rx,o=r ім'я_файлу

Знак рівності = у цьому виразі означає строге визначення права доступу. У команді можна також використовувати знак + для додавання зазначених режимів до зазначених класів і знак – для видалення зазначених режимів із зазначених класів.

Зверніть увагу – права доступу записуються у строгому порядку. Спочатку читання, потім запис, в кінці виконання. У вісімковому поданні виконувати адміністрування дещо зручніше, оскільки такий вид запису коротший за літерний опис прав доступу.

Правам доступу для читання, запису та запуску файлу відповідають наступні числові значення: читання – чотири, запис – два, запуск – один, не встановлені права доступу – нуль. Число, що визначає дозвіл для користувача, складається із суми чисел, що вказують на певні права доступу (0, 1, 2, 4). Наприклад: 0 (0 + 0 + 0) – прав немає,  1 (0 + 0 + 1) – є права тільки на запуск, 2 (0 + 2 + 0) – дозволено лише запис, 3 (0 + 2 + 1) – є дозволи на запис та виконання, 4 (4 + 0 + 0) – є можливість лише читання даних і так далі. Нижче наводимо таблицю з описом атрибутів доступу до директорій та файлів, а також з їх позначенням.

 

OCT Bin Mask Права доступу до файлу Права доступу до каталогу
0 000 – – – Пpава відсутні Пpава відсутні
1 001 – – x Атрибути запуску файлів Права доступу до каталогів. При цьому відсутні права на отримання списку файлів, а також їх створення, видалення та перейменування
2 010 – w – Атрибути зaпису Пpaва відсутні
3 011 – w x Атрибути запису та запуску Повні права доступу за винятком прав доступу до імен файлів
4 100 r – – Доступ для читання Читання імен файлів
5 101 r – x Доступ для читання та зaпуску Доступ для читання імен файлів, а також файлів і доступ до їх атрибутів. При цьому відсутні права на створення, видалення та перейменування файлів у каталозі
6 110 r w – Атрибути читання та зaпису Тільки читання імен файлів
7 111 r w x Повний доступ Повний доступ

 

Призначення дозволів за допомогою chmod

Приклади керування правилами доступу за допомогою чисел:

chmod 764 ім'я_файлу

Цифра 7 описує дозволи для власника файлу, цифра 6 – вказує на права доступу для групи і 4 – це права доступу для всіх інших користувачів. Відповідно, такий запис говорить про те, що власник файлу може читати, змінювати та запускати файл. Всі члени групи мають доступ для читання та внесення до файлу змін, однак запускати його не можуть. Інші користувачі мають право лише читати файл.

chmod a=rwx ім'я_файлу

Наведений вище рядок змінює встановлені розширення файлу на повні права доступу для всіх.

chmod u+x,g+w-x ім'я_файлу

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

Щоб переглянути правила доступу до зазначеного файлу у вісімковому форматі запису, використовується команда stat:

stat -c “%a” ім'я_файлу 644

Такий варіант вживання chmod дозволяє прибрати права доступу на запис для користувача «інші»:

chmod o-w ім'я_файлу

Щоб користувач, який не є власником даних, міг скоригувати права на доступ – він повинен задати команду chmod із використанням sudo, скажімо:

sudo chmod 644 highloadtoday.txt

Ця команда застосовує правила для будь-яких даних у директорії /home/highload , а також у будь-якому файлі у вкладених директоріях:

find /home/highload -type f -exec chmod 644 {} \;

Ця команда рекурсивно застосовує правила доступу для будь-якої папки в каталозі /home/highload , а також для будь-яких вкладених підкаталогів:

find /home/highload -type d -exec chmod 755 {} \;

Аналогічні дії можна виконати без команди find:

 chmod -R go=rX,u=rwX /home/highload 

Рекомендації для адміністрування

Варіант «chmod 777» категорично не рекомендується використовувати для визначення дозволів файлів та папок. Цей варіант означає, що дані будуть доступні для зміни, запуску та читання будь-яким користувачем, що є потенційною вразливістю та несе загрозу безпеці. Якщо виникають проблеми з керуванням доступом до веб-сервера, замість рекурсивної установки прав доступу 777, змініть власника файлу на користувача, який запустив програму, і призначте права доступу до файлу та дозволу для каталогу з 644 (-rw-r--r--) на 755 (drwxr-xr-x).

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

chown имя_пользователя параметры имя__файла

Наприклад, щоб поміняти власника директорії /home/highload на користувача sergii, необхідно задіяти команду:

chown sergii /home/highload 

Як і при використанні команди chmod, для рекурсивної обробки всіх вкладених каталогів вказується параметр -R:

chown -R sergii /home/highload 

Розширені дозволи

Крім основних прав доступу, в LinuxOS є розширені права. До них відносяться дозвіл на надання ідентифікатора користувача SUID, ідентифікатор групи SGID, а також sticky bit. SUID відповідає числове значення 4, SGID – це 2, а sticky bit визначається числовим значенням 1.

Біт зміни ідентифікатора користувача SUID необхідний, коли потрібно змінити поточний userID на ідентифікатор власника файлу. При цьому користувач зможе запустити файл із правами власника цього файлу. Біт зміни айді групи SGID схожий на SUID, але визначає не права користувача файлу, а групи – власника файла. Будь-які файли, що створюються в каталозі з призначеним SGID, отримуватимуть ідентифікатор групи – власника каталогу, а не власника файлу. Папки, що створюються в директорії з призначеним SGID, будуть успадковувати його від батьківської директорії.

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

Висновок

Ми розібралися з базовими принципами встановлення дозволів доступу до даних у Unix-системах. Для закріплення навичок рекомендуємо вам переглянути відео, в якому розповідається як влаштована система прав та як нею керувати.

Останні статті

Айтівець Міноборони США понабирав кредитів і хотів продати рф секретну інформацію

32-річний розробник безпеки інформаційних систем Агентства національної безпеки Джарех Себастьян Далке отримав 22 роки в'язниці…

30.04.2024

Простий та дешевий. Українська Flytech запустила масове виробництво розвідувальних БПЛА ARES

Українська компанія Flytech представила розвідувальний безпілотний літальний апарат ARES. Основні його переваги — недорога ціна…

30.04.2024

Запрошуємо взяти участь у премії TechComms Award. Розкажіть про свій потужний PR-проєкт у сфері IT

MC.today разом з Асоціацією IT Ukraine і сервісом моніторингу та аналітики згадок у ЗМІ та…

30.04.2024

«Йдеться про потенціал мобілізації»: Україна не планує примусово повертати українців із ЄС

Україна не буде примусово повертати чоловіків призовного віку з-за кордону. Про це повідомила у Брюсселі…

30.04.2024

В ЗСУ з’явився жіночий підрозділ БПЛА — і вже можна проходити конкурсний відбір

В Збройних Силах України з'явився жіночий підрозділ з БПЛА. І вже проводиться конкурсний відбір до…

30.04.2024

GitHub на наступному тижні випустить Copilot Workplace — ШІ-помічника для розробників

GitHub анонсував Copilot Workspace, середовище розробки з використанням «агентів на базі Copilot». За задумкою, вони…

30.04.2024