Як використовувати команду chmod в Linux

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

chmod Змінює права доступу до файлів

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

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

Ви використовуєте команду chmod для встановіть кожен із цих дозволів. До подивіться, які дозволи встановлено у файлі або каталозі ми можемо використовувати ls.

Перегляд і розуміння дозволів на файли

Ми можемо використовувати параметр -l (довгий формат), щоб ls відображав права доступу до файлів і каталогів.

ls -l

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

Наступні дев’ять символів представляють налаштування для трьох наборів дозволів.

Перші три символи показують дозволи для користувача, якому належить файл (дозволи користувача).
Середні три символи показують дозволи для членів групи файлу (групові дозволи).
Останні три символи показують дозволи для всіх, хто не належить до перших двох категорій (інші дозволи).

У кожному наборі дозволів є три символи. Символи є індикаторами наявності чи відсутності одного з дозволів. Це або тире (-), або літера. Якщо символ є тире, це означає, що дозвіл не надано. Якщо символом є r, w або x, цей дозвіл надано.

Букви означають:

r: Дозволи на читання. Файл можна відкрити та переглянути його вміст.
w: дозволи на запис. Файл можна редагувати, змінювати та видаляти.
x: Виконати дозволи. Якщо файл є сценарієм або програмою, його можна запустити (виконати).

  Як грати в Max Payne на Linux

Наприклад:

— означає, що жодних дозволів не було надано взагалі.
rwx означає, що надано повні дозволи. Індикатори читання, запису та виконання всі присутні.

На нашому знімку екрана перший рядок починається з d. Цей рядок відноситься до каталогу під назвою «архів». Власником каталогу є «dave», а назва групи, до якої належить каталог, також називається «dave».

Наступні три символи є правами користувача для цього каталогу. Вони показують, що власник має повні дозволи. Усі символи r, w і x присутні. Це означає, що користувач dave має права на читання, запис і виконання для цього каталогу.

Другий набір із трьох символів – це дозволи групи, це rx. Вони показують, що члени групи dave мають права на читання та виконання цього каталогу. Це означає, що вони можуть перерахувати файли та їх вміст у каталозі, і вони можуть cd (виконати) у цьому каталозі. Вони не мають дозволу на запис, тому не можуть створювати, редагувати або видаляти файли.

Остаточний набір із трьох символів також є rx. Ці дозволи застосовуються до людей, які не керуються першими двома наборами дозволів. Ці люди (так звані «інші») мають дозволи на читання та виконання цього каталогу.

Таким чином, учасники групи та інші мають права на читання та виконання. Власник, користувач на ім’я dave, також має права на запис.

Для всіх інших файлів (окрім файлу сценарію mh.sh) dave та члени групи dave мають властивості читання та запису файлів, а інші мають лише дозволи на читання.

Для окремого випадку файлу сценарію mh.sh власник Дейв та учасники групи мають дозволи на читання, запис і виконання, а інші мають дозволи лише на читання та виконання.

Розуміння синтаксису дозволів

Щоб використовувати chmod для встановлення дозволів, нам потрібно сказати йому:

Хто: для кого ми встановлюємо дозволи.
Що: які зміни ми робимо? Ми додаємо чи видаляємо дозвіл?
Який: які з дозволів ми встановлюємо?

Ми використовуємо індикатори для представлення цих значень і формуємо короткі «оператори дозволів», такі як u+x, де «u» означає «користувач» (хто), «+» означає додати (що), а «x» означає дозвіл на виконання (котрий).

  Як грати в Hearthstone на Linux

Значення «хто», які ми можемо використовувати:

u: Користувач, тобто власник файлу.
g: Група, тобто члени групи, до якої належить файл.
o: Інші, тобто люди, які не керуються дозволами u та g.
a: Все, тобто все вищесказане.

Якщо жоден із них не використовується, chmod поводиться так, ніби використовувався «a».

Значення «що» ми можемо використовувати:

–: Знак мінус. Знімає дозвіл.
+: Знак плюс. Надає дозвіл. Дозвіл додається до наявних дозволів. Якщо ви хочете мати цей дозвіл і тільки цей дозвіл, використовуйте параметр =, описаний нижче.
=: Знак рівності. Установіть дозвіл і видаліть інших.

Значення «які », які ми можемо використовувати:

r: Дозвіл на читання.
w: Дозвіл на запис.
x: дозвіл на виконання.

Налаштування та зміна дозволів

Скажімо, у нас є файл, до якого всі мають повні права доступу.

ls -l new_ file.txt

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

chmod u=rw,og=r new_file.txt

Використання оператора «=» означає, що ми видаляємо всі наявні дозволи, а потім встановлюємо вказані.

давайте перевіримо новий дозвіл на цей файл:

ls -l new_file.txt

Наявні дозволи видалено, а нові дозволи встановлено, як ми очікували.

Як щодо додавання дозволу без видалення наявних налаштувань дозволів? Ми також можемо це зробити легко.

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

ls -l new_script.sh

Ми можемо додати дозвіл на виконання для всіх за допомогою такої команди:

chmod a+x new_script.sh

Якщо ми подивимося на дозволи, ми побачимо, що тепер дозвіл на виконання надано всім, а наявні дозволи все ще діють.

ls -l new_script.sh

Ми могли б досягти того ж самого без «a» в операторі «a+x». Наступна команда працювала б так само добре.

chmod +x new_script.sh

Налаштування дозволів для кількох файлів

Ми можемо застосувати дозволи до кількох файлів одночасно.

Це файли в поточному каталозі:

ls -l

Скажімо, ми хочемо видалити дозволи на запис для «інших» користувачів із файлів із розширенням «.page». Ми можемо зробити це за допомогою такої команди:

chmod o-r *.page

Давайте перевіримо, який ефект це дало:

ls -l

Як бачимо, дозвіл на читання видалено з файлів «.page» для категорії «інші». Жодні інші файли не постраждали.

  Як налаштувати та використовувати веб-браузер Qutebrowser у Linux

Якби ми хотіли включити файли в підкаталоги, ми могли б використати параметр -R (рекурсивний).

chmod -R o-r *.page

Числова скорочення

Іншим способом використання chmod є надання дозволів, які ви хочете надати власнику, групі та іншим у вигляді тризначного числа. Крайня ліва цифра означає дозволи для власника. Середня цифра означає дозволи для учасників групи. Крайня права цифра означає дозволи для інших.

Цифри, які ви можете використовувати, і те, що вони представляють, перераховані тут:

0: (000) Немає дозволу.
1: (001) Виконати дозвіл.
2: (010) Дозвіл на запис.
3: (011) Дозволи на запис і виконання.
4: (100) Дозвіл на читання.
5: (101) Дозволи на читання та виконання.
6: (110) Дозволи на читання та запис.
7: (111) Дозволи на читання, запис і виконання.

Кожне з трьох дозволів представлено одним з бітів у двійковому еквіваленті десяткового числа. Отже, 5, тобто 101 у двійковому форматі, означає читання та виконання. 2, який є 010 у двійковому форматі, означатиме дозвіл на запис.

Використовуючи цей метод, ви встановлюєте дозволи, які хочете мати; ви не додаєте ці дозволи до наявних дозволів. Отже, якщо дозволи на читання та запис вже були на місці, вам доведеться використовувати 7 (111), щоб додати дозволи на виконання. Використання 1 (001) призведе до видалення дозволів на читання та запис і додавання дозволу на виконання.

Давайте знову додамо дозвіл на читання до файлів “.page” для інших категорій користувачів. Ми також повинні встановити дозволи користувача та групи, тому нам потрібно встановити їх такими, якими вони вже є. Ці користувачі вже мають права читання та запису, тобто 6 (110). Ми хочемо, щоб «інші» мали права читання та дозволи, тому для них потрібно встановити значення 4 (100).

Це досягне наступна команда:

chmod 664 *.page

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

ls -l

Розширені опції

Якщо ти прочитайте man-сторінку для chmod ви побачите, що є деякі розширені параметри, пов’язані з бітами SETUID і SETGID, а також з обмеженим видаленням або бітом «липкості».

Для 99% випадків вам знадобиться chmod, описані тут варіанти допоможуть вам.