# chmod

1. **Щоб зробити файл виконуваним :**

   ```bash
   chmod +x script.sh
   ```

   Після виконання цієї команди, ви зможете виконати цей файл, введенням шляху до нього або використовуючи команду `./` перед ім'ям файлу:

   ```bash
   ./script.sh
   ```

   Зверніть увагу, що вам може знадобитися право на виконання файлу, аби вам було дозволено використовувати команду `chmod`. Якщо у вас немає необхідних прав, ви можете використовувати `sudo` перед командою `chmod`
2. **Надати всі права для всіх:**

   ```bash
   chmod +rwx файл
   ```
3. **Заборонити доступ для інших користувачів:**

   ```bash
   chmod go= файл
   ```
4. **Тільки читання і запис для власника:**

   ```bash
   chmod u=rw файл
   ```
5. **Дозволити виконання тільки для групи:**

   ```bash
   chmod g=x файл
   ```
6. **Додати право на виконання для всіх:**

   ```bash
   chmod a+x файл
   ```
7. **Встановлення SUID (Set User ID) для виконання файлу власником:**

   ```bash
   chmod u+s файл
   ```
8. **Встановлення SGID (Set Group ID) для виконання файлу групою:**

   ```bash
   chmod g+s файл
   ```
9. **Встановлення "sticky bit" для каталогу (запобігає видаленню чужих файлів):**

   ```bash
   chmod +t каталог
   ```
10. **Комбінування дозволів:**

    ```bash
    chmod u=rw,go=rx файл
    ```

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

* `4` - Читання (Read)
* `2` - Запис (Write)
* `1` - Виконання (Execute)

Сумуючи ці значення, ви можете встановити потрібні дозволи.

Ось таблиця відповідності між числовими і літеральними значеннями дозволів для команди `chmod`:

<table><thead><tr><th width="187.33333333333331">Літера</th><th width="240">Число</th><th>Дозвіл</th></tr></thead><tbody><tr><td><code>r</code></td><td>4</td><td>Читання</td></tr><tr><td><code>w</code></td><td>2</td><td>Запис</td></tr><tr><td><code>x</code></td><td>1</td><td>Виконання</td></tr><tr><td><code>s</code></td><td>4 (SUID), 2 (SGID)</td><td>Set User ID, Set Group ID</td></tr><tr><td><code>t</code></td><td>1</td><td>Sticky Bit</td></tr></tbody></table>

За допомогою цих значень ви можете конструювати літеральні представлення дозволів для команди `chmod`. Наприклад:

* `rwx` відповідає `7` (4 + 2 + 1),
* `rw-` відповідає `6` (4 + 2),
* `r--` відповідає `4` (тільки читання).

Ось кілька прикладів:

1. **Надати всі права для всіх:**

   ```bash
   chmod 777 файл
   ```
2. **Тільки читання і запис для власника, читання для групи та інших:**

   ```bash
   chmod 644 файл
   ```
3. **Дозволити виконання для власника та групи, тільки читання для інших:**

   ```bash
   chmod 551 файл
   ```
4. **Тільки виконання для всіх:**

   ```bash
   chmod 111 файл
   ```
5. **Встановлення SUID (Set User ID) та SGID (Set Group ID) для власника та групи відповідно:**

   ```bash
   chmod 4755 файл
   ```
6. **Встановлення "sticky bit" для каталогу:**

   ```bash
   chmod 1777 каталог
   ```

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

Також важливо зазначити, що при встановленні SUID, SGID та "sticky bit" числові значення можуть включати додаткові біти. Наприклад, `4755` встановлює SUID, що додає 4000 до числа прав доступу.

{% embed url="<https://acode.com.ua/user-types-and-permissions-linux/>" %}
