PQ
PQ.Hosting

Валюта

Как сделать файл исполняемым в Linux: chmod и GUI

Автор
PQ
02 марта 2026
4 мин чтения
4 просмотров

В Linux файл не становится исполняемым автоматически — даже если это скрипт с правильным содержимым и расширением .sh. Исполняемость — отдельный атрибут, который задаётся явно. Без него система откажется запускать файл, даже если он синтаксически корректен.

Почему Linux не запускает файл без флага

В Windows исполняемость определяется расширением: .exe, .bat, .com. В Linux расширение не имеет значения. Вместо этого у каждого файла есть три отдельных флага прав для трёх категорий пользователей:

-rwxr-xr-- 1 user group 1024 Mar 02 12:00 script.sh

Три группы символов после -: права владельца (rwx), группы (r-x), остальных (r--). Буква x в каждой группе — это и есть флаг исполняемости. Если вместо неё стоит -, файл запустить нельзя.

Попытка запустить файл без флага даёт ошибку:

bash: ./script.sh: Permission denied

Или в некоторых оболочках:

The file './script' is not executable by this user

Команда chmod: синтаксис

Флагами управляет утилита chmod. Базовый синтаксис:

chmod [категория][действие][флаг] файл

Категории:

  • u — user, владелец файла
  • g — group, группа
  • o — others, остальные пользователи
  • a — all, все три категории сразу

Действия:

  • + — добавить право
  • - — убрать право
  • = — установить точно эти права (остальные убрать)

Флаги:

  • x — execute (выполнение)
  • r — read (чтение)
  • w — write (запись)

Дать право на выполнение

Только для владельца:

chmod u+x script.sh

Для всех — владельца, группы и остальных:

chmod a+x script.sh

Или то же самое короче:

chmod +x script.sh

Без указания категории chmod применяет a — ко всем. После этого файл можно запустить:

./script.sh

Проверить текущие права

Чтобы посмотреть флаги файла — команда ls -l:

ls -l script.sh

Вывод до установки флага:

-rw-rw-r-- 1 user user 45 Мар 02 15:33 script.sh

После chmod ugo+x script.sh:

-rwxrwxr-x 1 user user 45 Мар 02 15:33 script.sh

Буква x появилась в позициях владельца, группы и остальных. Звёздочка * после имени файла в некоторых терминалах — тоже признак исполняемого файла.

Числовой способ: восьмеричные права

Кроме символьной записи, chmod принимает числа в восьмеричной системе. Каждая цифра кодирует права одной категории:

Цифра Права Расшифровка
7 rwx чтение + запись + выполнение
6 rw- чтение + запись
5 r-x чтение + выполнение
4 r-- только чтение
0 --- нет прав

Три цифры — права для владельца, группы и остальных.

Типичные сценарии:

# Владелец — полные права, остальные — только чтение и выполнение
chmod 755 script.sh

# Только владелец может всё, остальные не имеют никаких прав
chmod 700 script.sh

# Все могут всё (небезопасно для скриптов с паролями)
chmod 777 script.sh

755 — стандарт для исполняемых скриптов и программ. 700 — для скриптов с чувствительными данными (ключи, пароли).

Убрать флаг исполняемости

chmod -x script.sh

Или только для конкретной категории:

chmod o-x script.sh   # убрать для остальных, у владельца и группы оставить

Рекурсивно для всех файлов в директории

Флаг -R применяет права ко всем файлам и вложенным папкам:

chmod -R +x /opt/myapp/

С рекурсией нужно быть осторожным — флаг x добавится и к обычным файлам данных, и к директориям. Для директорий x означает право входить в них, а не запускать — это другое. Более точный подход — использовать find:

# Только файлы .sh
find /opt/myapp -name "*.sh" -exec chmod +x {} \;

# Только обычные файлы (не директории)
find /opt/myapp -type f -exec chmod +x {} \;

GUI-способ: через файловый менеджер

Для тех, кто предпочитает графический интерфейс — флаг исполняемости можно установить через Nautilus (файловый менеджер GNOME) без терминала.

Кликнуть правой кнопкой по файлу → Свойства.

Перейти на вкладку Права. Поставить галочку «Разрешить выполнение файла как программы».

Это эквивалент команды chmod u+x — флаг добавляется только для владельца.

В других окружениях аналогичные опции находятся в том же месте: Thunar (Xfce) — вкладка «Права доступа», Dolphin (KDE) — вкладка «Права».

Частые ошибки

chmod: changing permissions of 'file': Operation not permitted Нет прав на изменение файла. Нужен sudo или смена владельца через chown.

Флаг добавлен, но скрипт всё равно не запускается Скорее всего, не указан интерпретатор. Добавить в первую строку скрипта shebang:

#!/bin/bash

Или для Python:

#!/usr/bin/env python3

Файл на FAT32/NTFS разделе — chmod не работает Файловые системы FAT32 и NTFS не поддерживают флаги Linux. Флаг нельзя ни установить, ни снять. Решение — скопировать файл на раздел с ext4/xfs/btrfs.

Шпаргалка

Задача Команда
Сделать исполняемым для всех chmod +x file
Только для владельца chmod u+x file
Числовой способ (стандарт) chmod 755 file
Убрать флаг исполняемости chmod -x file
Рекурсивно для всех .sh find . -name "*.sh" -exec chmod +x {} \;
Проверить текущие права ls -l file
Числовые права подробно stat -c "%a %n" file

Поделиться статьей

Похожие статьи