
При получении бинарного файла из исходного кода важным этапом является корректный запуск. В Linux поведение исполняемого файла зависит от прав доступа, расположения и переменных окружения. Без этих параметров система может вернуть сообщения вида Permission denied или Command not found.
Перед запуском проверяют наличие флага исполнения. Если файл получен из репозитория или перенесён с другой машины, права могли быть сброшены. Команда chmod +x файл назначает возможность выполнения пользователем или группой.
При запуске бинарника, находящегося в текущем каталоге, Linux не ищет его автоматически. Необходимо указать путь: ./имя_файла. Если необходимо запускать программу из любого каталога, добавляют путь к ней в переменную PATH через ~/.bashrc или ~/.profile.
Проверка наличия исполняемых прав у бинарника

- в начале строки отражён тип файла и набор прав;
- три первых символа после типа относятся к владельцу;
- следующие три – к группе;
- последние три – к остальным пользователям.
Если файл не имеет права исполнения, вызов программы приведёт к ошибке «Permission denied». В таком случае применяют команду chmod с нужным набором атрибутов. Например:
- chmod u+x файл – разрешение для владельца;
- chmod g+x файл – разрешение для группы;
- chmod a+x файл – разрешение для всех.
Назначение флага исполнения через chmod
Если исполняемый бит отсутствует, система не позволит запустить бинарник напрямую. Команда chmod изменяет разрешения с учётом владельца, группы и остальных пользователей. Флаг исполнения добавляется символом +x или числовым значением режима доступа.
| Команда | Действие |
|---|---|
| chmod u+x файл | добавление права исполнения владельцу |
| chmod g+x файл | добавление права группе |
| chmod o+x файл | добавление права остальным пользователям |
| chmod a+x файл | разрешение для всех категорий пользователей |
| chmod 755 файл | установка прав rwx для владельца и r-x для остальных |
Для применения прав рекурсивно используется параметр -R, если необходимо назначить разрешения для всех файлов внутри каталога: chmod -R a+x /путь/к/директории. После изменения прав проверяют результат командой ls -l или stat имя_файла.
Запуск файла из текущего каталога с указанием пути

В Linux текущий каталог не входит в список путей поиска исполняемых файлов. Поэтому при попытке запуска по имени без указания пути оболочка выдаст сообщение command not found. Для запуска применяется относительный путь, начинающийся с точки:
./имя_файла
Перед выполнением убедитесь, что бинарник обладает правом исполнения, иначе будет ошибка Permission denied. При необходимости добавляют параметр или аргументы:
./имя_файла —config=config.yaml
Если файл находится в подкаталоге текущей директории, путь дополняется именем каталога:
./bin/программа
Для однократного выполнения без изменения переменной PATH этот подход наиболее прямой, так как явно указывает расположение бинарника и исключает конфликты с файлами одинакового имени в других каталогах.
Добавление каталога с бинарником в PATH

Чтобы запускать бинарный файл по имени, каталог, где он расположен, добавляют в переменную окружения PATH. Сначала определяют полный путь к директории, затем изменяют значение переменной для текущей сессии или постоянного использования.
Разовое добавление выполняют так:
export PATH=»$PATH:/opt/приложение/bin»
Для сохранения изменений после выхода из оболочки используют конфигурационный файл:
echo ‘export PATH=»$PATH:/opt/приложение/bin»‘ >> ~/.bashrc
После редактирования конфигурации выполняют:
source ~/.bashrc
Проверка проводится командой:
which имя_файла
Если команда возвращает путь, каталог успешно включён в PATH. При наличии нескольких версий одного бинарника порядок поиска определяет последовательность каталогов в переменной PATH: первым будет найден файл, расположенный ближе к началу строки.
Запуск бинарного файла с параметрами окружения
Некоторые бинарные файлы зависят от переменных окружения для корректной работы. Их можно задать непосредственно при запуске без постоянного изменения конфигурации системы. Синтаксис:
VAR1=значение1 VAR2=значение2 ./имя_файла
Пример использования:
LD_LIBRARY_PATH=/opt/libs ./программа
Эта команда указывает директорию с библиотеками, которую программа использует в первую очередь. Для временной смены пользователя применяют sudo -E ./имя_файла, что сохраняет текущие переменные окружения.
Для проверки доступных переменных используют команду env или printenv. Изменения применяются только в рамках сессии или конкретного запуска, после завершения процесса системные настройки остаются без изменений.
Просмотр зависимостей через ldd перед запуском

Перед запуском бинарного файла важно убедиться, что все необходимые библиотеки доступны. Команда ldd имя_файла отображает список динамических зависимостей и пути к ним.
Пример использования:
ldd ./программа
В результате можно увидеть строки вида:
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f…)
Для исправления отсутствующих зависимостей используют пакетный менеджер дистрибутива (apt, yum, zypper) или устанавливают библиотеки вручную. После установки проверку через ldd повторяют, чтобы убедиться в корректности всех ссылок.
Запуск бинарника от имени другого пользователя через sudo

Если бинарный файл требует прав суперпользователя или другого пользователя, применяют команду sudo. Она позволяет выполнить программу с учётом прав указанного аккаунта без изменения текущей сессии.
Простейший вариант:
sudo ./имя_файла
Для запуска от конкретного пользователя используется опция -u:
sudo -u имя_пользователя ./имя_файла
Важно, чтобы у пользователя были права на выполнение файла и доступ к необходимым ресурсам, иначе возникнут ошибки Permission denied или отказ в доступе к файлам конфигурации.
Для сохранения текущих переменных окружения применяют ключ -E:
sudo -E ./имя_файла
После выполнения бинарника выход из процесса возвращает стандартные права текущей сессии, что предотвращает длительное использование повышенных привилегий.
Синтаксис перенаправления:
- ./имя_файла 2> error.log – сохраняет стандартные ошибки (stderr) отдельно.
- ./имя_файла >> output.log 2>&1 – добавляет данные в конец файла, не перезаписывая его.
Для длительных процессов или сервисов используют nohup:
nohup ./имя_файла > log.txt 2>&1 &
Вопрос-ответ:
Почему при запуске бинарного файла появляется ошибка Permission denied?
Ошибка возникает, если у файла отсутствует право на исполнение. Проверить текущие разрешения можно командой ls -l имя_файла. Для добавления флага исполнения используют chmod +x имя_файла для всех пользователей или chmod u+x имя_файла для владельца.
Можно ли запускать бинарник без указания пути к файлу?
Если каталог с бинарником не включён в переменную PATH, оболочка не сможет найти файл по имени, и появится ошибка command not found. Решение — использовать относительный путь ./имя_файла или добавить директорию в PATH через export PATH=»$PATH:/путь/к/каталогу». После этого запуск по имени будет работать из любого каталога.
Как проверить, все ли библиотеки необходимы бинарнику установлены?
Команда ldd имя_файла показывает динамические зависимости. Каждая библиотека отображается с полным путём. Если вывод содержит not found, соответствующая библиотека отсутствует. В таком случае её устанавливают через пакетный менеджер дистрибутива или копируют вручную в системные каталоги, после чего проверку повторяют.
Можно ли запускать бинарный файл с правами другого пользователя без полного переключения на него?
Да, для этого используют sudo -u имя_пользователя ./имя_файла. Если требуется сохранить текущие переменные окружения, добавляют опцию -E. Такой способ позволяет выполнять программы с правами другого пользователя, не меняя текущую сессию и не предоставляя постоянные привилегии.
Как сохранять вывод и ошибки бинарного файла для анализа работы программы?
Для логирования применяют перенаправление потоков: ./имя_файла > output.log 2>&1 объединяет стандартный вывод и ошибки в один файл. Для добавления данных в конец файла используют >> вместо >. Для фоновых процессов и сохранения логов после закрытия терминала используют nohup ./имя_файла > log.txt 2>&1 & и проверяют запись через tail -f log.txt.
