Как сделать файл исполняемым в Linux?
Linux и Windows различаются в способе обработки исполняемых файлов. В Linux, в отличие от Windows, файлы не определяются исключительно по расширению, а требуют наличия специального флага, указывающего на их исполняемость. Этот флаг определяет режимы доступа к файлу: чтение, исполнение и запись. Например, при скачивании установщиков программ или создании скриптов, по умолчанию присваиваются режимы чтения и записи. Однако, для выполнения программы требуется выполнить дополнительные действия.
Итак, что такое исполняемость?
Это свойство файла, которое позволяет операционной системе понять, что файл содержит инструкции для выполнения программы. Для процессора нет разницы между инструкциями и данными, они оба представлены в виде байтов. Конкретная последовательность байтов указывает процессору на необходимость выполнения определенных действий. Для системы важно определить, какие файлы должны быть выполнены по инструкции, а какие — нет. И для этого используются флаги исполняемости. Содержимое файла не меняется в зависимости от флага исполняемости, отличие заключается только в нескольких строках кода. Для скриптов работает аналогичный принцип, но команды выполняет интерпретатор, такой как оболочка bash. Обычные программы также имеют свой загрузчик, например, ld-linux.so.2.
В Linux существует утилита chmod, которая позволяет управлять флагами исполняемости. Синтаксис команды выглядит следующим образом:
$ chmod категория действие флаг адрес_файла
Здесь важно учесть следующее:
- Флаг может быть одним из трех: r (чтение), w (запись), x (исполнение).
- Категория может быть одной из трех: владелец файла (u), группа данных (g), все остальные пользователи (o).
- Действие может быть + (установка флага) или — (снятие флага).
Для того чтобы сделать файл исполняемым в Linux, достаточно выполнить следующую команду:
$ chmod u+x адрес_файла
В большинстве случаев это будет достаточно, однако, если требуется предоставить права на выполнение файлов другим пользователям, необходимо использовать следующую команду:
$ chmod ugo+x адрес_файла
Чтобы просмотреть флаги исполняемости файлов в терминале, можно воспользоваться утилитой ls:
$ ls -l каталог_с_файлами
Флаги исполняемости будут отображены для каждой категории. Если флаг не установлен, вместо него будет прочерк.
Снятие флага исполняемости выполняется аналогично, просто используется знак минус перед флагом:
$ chmod u-x адрес_файла
Теперь рассмотрим, как установить флаг исполняемости в графическом интерфейсе (GUI). Для примера рассмотрим менеджер файлов GNOME, Nautilus. Чтобы установить флаг исполняемости, щелкните правой кнопкой мыши на файле или скрипте, выберите «Свойства» в контекстном меню, затем перейдите на вкладку «Права» и поставьте галочку напротив «Разрешить выполнение файла как программы». Теперь файл будет выполняться непосредственно из менеджера файлов. Вуаля, готово. Теперь у вас не возникнет проблем с запуском программ и скриптов из интернета.
Как сделать файл исполняемым в Ubuntu?
Как в Ubuntu сделать так, чтобы файл был исполняемым, чтобы его можно было запускать?
Щелкните правой кнопкой мыши по файлу и выберите «Свойства» (Properties). В открывшемся окне перейдите на вкладку «Права» (Permissions) и установите галочку напротив пункта «Позволить выполнение файла как программы» (Allow executing file as program).
Войдите, чтобы ставить лайки мне нравится
войдите, чтобы ставить лайки
Другие вопросы и ответы
- Как в Ubuntu распаковать rar архив?
- Как удалить DEB пакет?
- Как открыть командную строку (терминал, консоль) в Ubuntu?
- Denwer для Linux
- Конвертирую видео с ffmpeg и получаю ошибку Unknown encoder ‘libx264’
Категории вопросов:
- Ubuntu
- Интернет и сети
- Командная строка
- Работа с файлами
- Оборудование и драйвера
- Программы и игры
Форум
по Linux
Руководство
по Ubuntu
Аналоги программ
Windows vs Linux
Новое в галерее
Комментарии
Активный пользователь
26.03.2011
23:12
Постоянная ссылка на комментарий
Войдите, чтобы ставить лайки мне нравится
войдите, чтобы ставить лайки
В консоли
sudo chmod +x путь_к_файлу
Делаем файл исполняемым в Linux
Чем отличается Linux от Windows в плане исполнений файлов, так это тем, что первая система определяет выполняемые файлы программными не по расширению, а по специальному флагу исполняемости. Так у каждого из них есть три режима исполняемости: чтение, исполнение и запись. Именно эти режимы определяют, что система может делать с конкретным файлом. Когда пользователь скачивает различные установщики из интернета или создает скрипт, то по умолчанию ему присваиваются следующие режимы – чтение и запись. Одним словом, пользователь не сможет сделать с такой программой ничего, так как с ним нужно сделать кое-что еще.
Что означает исполняемость?
Но для начала нужно разобраться с таким вопросом, как: что такое исполняемость и что это вообще означает? Начнем с программы, являющейся набором инструкций, выполняемых процессором над совокупностью данных с целью получения нужного результата. Для процессора не существует разницы между инструкциями и данными.
И первые, и вторые состоят из цифр – байт. То есть, определенное сочетание цифр будет означать для процессора необходимость выполнения конкретного действия. Для процессора нет принципиальной разницы, какой процесс выполнять – данные операционной системы или текстовый файл. И первый, и второй будут выполнены, вот только в случае с текстовым необходимость в инструкциях фактически отпадает.
Для понимания системой, какие должны быть выполнены по инструкции, а какие выполнять не нужно, и были придуманы флаги исполняемости. Фактически содержимое никак не изменяется в зависимости от установленного класса исполняемости – отличие сводится только к нескольким строчкам. Со скриптами все работает точно так же, только команды выполняет не процессор, а интерпретатор, например, в bash скриптах — сама оболочка bash. Да и в обычных программ тоже есть свой загрузчик — это ld-linux.so.2.
Как сделать файл исполняемым
В системе Linux предусмотрена специальная утилита, которая позволяет управлять флагами, которая получила название chmod. Для вызова этой утилиты необходимо задействовать синтаксис:
$ chmod категория действие флаг адрес_файла
И здесь необходимо учитывать следующее:
Флаг — один из доступных — r (чтение), w (запись), x (выполнение).
Категория — могут устанавливаться для трех категорий: владельца файла, группы данных и всех остальных пользователей. В команде они указываются символами u (user) g (group) o (other) соответственно.
Действие — может быть + (плюс), что будет значить установить флаг или — (минус) снять флаг.
Таким образом, чтобы сделать исполняемым скрипт в Linux, пользователю необходимо выполнить:
Зачастую уже этого достаточно, чтобы сделать его исполняемым, но если необходимо наделить других пользователей полномочиями исполнять эти файлы, еще необходимо добавить:
Чтобы посмотреть их в терминале достаточно воспользоваться утилитой ls:
Флаги включены для всех категорий. Первое rwx — флаги владельца, второе — группы, а третье — для всех остальных. Если он не установлен, на его месте будет прочерк.
Снять флаг исполняемого файла очень просто. Используется та же команда только со знаком минус:
Дальше рассмотрим вопрос установки управляемости в GUI.
Как установить флаг исполняемости в GUI
Для новичков эта инструкция окажется проще. Рассмотрим на примере менеджера GNOME, Nautilus. Кликните правой кнопкой по нашему объекту программы или скрипта, чтобы открыть контекстное меню, затем выберите свойства:
Переходим на вкладку права и устанавливаем галочку «Разрешить выполнение файла как программы»:
Теперь он будет запущен системой непосредственно из менеджера. Вот и вся инструкция. Теперь с запуском программы или скрипта из интернета у вас не возникнет трудностей.
Как запускаются исполняемые файлы в Linux
Доброго времени, читатели моих постов о Linux!
В сегодняшней статье расскажу о том, как работают исполняемые файлы. Из моей прошлой статьи о атрибутах доступа к файлам в Linux думаю Вам будет известно, что такое полномочия выполнения (исполнения). Данное право можно установить для любого файла. Исходя из этого, можно задать вопрос: неужели любой файл можно сделать программой? Да, так и есть. В Linux является ли файл исполняемым или нет, определяется не по его расширению, как в Windows (понятие расширение файла отсутствует в файловой системе Linux), а по правам доступа. Если у файла установлено право x (выполнения), его можно запустить на выполнение.
Что происходит, когда мы пытаемся выполнить файл ? Мы пытаемся набрать имя и, может быть, путь к файлу, который пытаемся запустить в командной строке и нажимаем Enter. (если файл расположен в текущем каталоге, то необходимо набирать ./ program). В первую очередь, оболочка проверяет, а имеет ли пользователь права на исполнение этого файла? Если имеет, тогда система смотрит, а это исполняемый бинарный файл? В Linux все исполняемые бинарные файлы в начале файла имеют заголовок .ELF (Executable and Linkable Format) (напомню, что в Windows в исполняемых файлах заголовок — MZ). Если это исполняемый бинарный файл, тогда, согласно его заголовку, происходит распределение оперативной памяти, и управление передается программе.
Если файл не бинарный, тогда считается, что это текстовый файл — скрипт или сценарий. В первых двух байтах сценария обнаруживается последовательность символов #!. Если символы «#!» присутствуют, тогда всю первую строку сценария, начиная с третьего байта, ядро воспримет как команду обработки. Исполнение сценария, содержащего указанную последовательность приведет к запуску указанной после » #!» команды, последним параметром которой будет имя самого файла сценария. Например, для файлов, написанных на языке shell script, первая строка будет выглядеть так:
#! /bin/sh
Для программ, написанных на perl, так:
#! /bin/perl
Таким образом, можно написать сценарий для любой программы, пример:
[bash@localhost ]$ cat > to.sort #!/bin/sort some unsorted lines [bash@localhost ]$ chmod +x to.sort [bash@localhost ]$ ./to.sort #!/bin/sort lines some unsorted
Во всех интерпретируемых языках программирования # — это символ комментария. То есть первая строка считается комментарием и программой не выполняется. При указании интерпретатора можно писать аргументы командной строки. Например:
#! /bin/sed -f command
Если в файле в первой строке нет этих символов, тогда все зависит о программы оболочки, в которой запускается программа. Если используется bash, то он считает, что файл содержит программу, написанную на языке shell script, запускает копию себя любимого и передает этой копии файл на интерпретацию. Если в файле действительно находится программа, то он ее выполняет. Если в файле находится «Война и мир» графа Льва Николаевича Толстого, то на экране появляются сообщения об ошибках shell script: «Я не знаю оператор Пьер Безухов. Наташа Ростова — это оператор или функция?»
Если Вы желаете выполнить exe-файл, который запускали в Windows, необходимо воспользоваться таким пакетом, как Wine. Но это уже совсем другая тема.
С Уважением, Mc.Sim!
P.S. Спасибо http://www.kryukov.biz/ за исходный текст.
Другие материалы в категории Linux
- Репликация Mysql (master-slave, master-master)
- Ошибка 0x80004005 0x80070035 на Windows 10 при доступе к сетевой папке
- Текстовый редактор VIM, основы работы
- Спринт Lingoda (ex Марафон Lingoda) + промокод.
- ddrescue или спасаем данные с HDD
- Бесплатный SLES для Vmware – ВСЁ…
- Резервное копирование файлов сайта по ssh
- SQUID настройка ACL и http_access
- squid, использование опции debug_options или диагностика компонентов squid
- Седьмой релиз Debian