Как сделать файл исполняемым в Linux. Типы файлов в Ubuntu Что такое выполняемый файл

Операционная система Linux, в отличие от Windows, определяет какие файлы являются программами не по расширению, а по специальному флагу исполняемости. У каждого файла есть три основных флага, чтение, запись и исполнение. Они определяют что система может делать с этим файлом.

Когда вы загружаете различные установщики программ из интернета или создаете скрипт в текстовом редакторе, для них устанавливаются флаги по умолчанию - только чтение и запись. Вы не сможете запустить такой файл как программу, с ним нужно сделать еще кое-что. В этой статье мы рассмотрим как сделать файл исполняемым в Linux.

Уже много написано о том, как установить флаг исполняемости. Но что происходит с файлом во время этого, что такое исполянемость и как это работает?

Программа - это набор инструкций, которые по очереди выполняет процессор над данными, чтобы получить определенный результат. Но это вы, наверное, уже знаете.

На самом деле для процессора нет разницы между данными и инструкциями. И те и другие состоят из байт, проще говоря цифр. Когда-то договорились, что определенные сочетания цифр будут означать то или иное действие процессора, а во всем остальном это те же данные. Поэтому для процессора нет никакой разницы что выполнять - исполняемый файл linux или обычный текстовый файл. Оба могут быть успешно выполнены, вот только во втором варианте инструкции не имеют никакого смысла.

Чтобы система могла определить какие файлы нужно выполнять, а какие лучше не надо и был придуман флаг исполняемости. По сути, флаг исполяемости - это несколько байт в файловой системе, которые говорят нужно выполнять файл или нет, само содержимое файла никак не изменяется. Со скриптами все работает точно так же, только команды из файла выполняет не процессор, а интерпретатор, например, в bash скриптах - сама оболочка bash. Да и в обычных программ тоже есть свой загрузчик - это ld-linux.so.2.

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

В операционной системе Linux, для управления флагами файлов используется утилита chmod. Синтаксис вызова утилиты:

  • Категория - флаги могут устанавливаться для трех категорий: владельца файла, группы файла и всех остальных пользователей. В команде они указываются символами u (user) g (group) o (other) соответственно.
  • Действие - может быть + (плюс) , что будет значить установить флаг или - (минус) снять флаг.
  • Флаг - один из доступных флагов - r (чтение), w (запись), x (выполнение).

Например, чтобы сделать исполняемый скрипт в linux для владельца файла, достаточно выполнить:

chmod u+x адрес_файла

Этого в большинстве случаев бывает достаточно, но если мы хотим чтобы файл могли выполнять и другие пользователи, нужно указать также другие категории: g и o :

chmod ugo+x адрес_файла

Посмотреть флаги в терминале можно с помощью утилиты ls:

ls -l каталог_с_файлами

Это значит, что все флаги включены для всех категорий. Первое rwx - флаги владельца, второе - группы, а третье - для всех остальных. Если флаг не установлен, на его месте будет прочерк.

Снять флаг исполняемого файла очень просто. Используется та же команда только со знаком минус:

chmod u-x адрес_файла

Как установить фалг исполняемости в GUI

Вы можете сделать файл исполняемым в linux не только через терминал. Такая функциональность есть во всех файловых менеджерах. Возможно, на первых порах это будет для вас проще. Рассмотрим на примере файлового менеджера GNOME, Nautilus. Кликните правой кнопкой по нашему файлу программы или скрипта, чтобы открыть контекстное меню, затем выберите свойства:

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

Готово, исполняемый файл linux может быть запущен системой, прямо из файлового менеджера.

Выводы

Вот и все, теперь вы знаете как сделать файл исполняемым в linux. И если нужно будет запустить скрипт или установщик из интернета, у вас не возникнет никаких проблем. Если остались вопросы, спрашивайте в комментариях!

память загрузчиком операционной системы и затем исполнен. В операционной системе Windows исполняемые файлы, как правило, имеют расширения ".exe" и ".dll". Расширение ".exe" имеют программы, которые могут быть непосредственно запущены пользователем. Расширение ".dll" имеют так называемые динамически связываемые библиотеки ( dynamic link libraries). Эти библиотеки экспортируют функции, используемые другими программами.

Для того чтобы загрузчик операционной системы мог правильно загрузить исполняемый файл в память , содержимое этого файла должно соответствовать принятому в данной операционной системе формату исполняемых файлов. В разных операционных системах в разное время существовало и до сих пор существует множество различных форматов. В этой главе мы рассмотрим формат Portable Executable (PE). Формат PE - это основной формат для хранения исполняемых файлов в операционной системе Windows . Сборки. NET тоже хранятся в этом формате.

Кроме того, формат PE может использоваться для представления объектных файлов . Объектные файлы служат для организации раздельной компиляции программы. Смысл раздельной компиляции заключается в том, что части программы (модули) компилируются независимо в объектные файлы , которые затем связываются компоновщиком в один исполняемый файл .

А теперь - немного истории. Формат PE был создан разработчиками Windows NT. До этого в операционной системе Windows использовались форматы New Executable (NE) и Linear Executable (LE) для представления исполняемых файлов, а для хранения объектных файлов использовался Object Module Format (OMF). Формат NE предназначался для 16-разрядных приложений Windows , а формат LE, изначально разработанный для OS/2 , был уже 32-разрядным. Возникает вопрос: почему разработчики Windows NT решили отказаться от существующих форматов? Ответ становится очевидным, если обратить внимание на то, что большая часть команды, работавшей над созданием Windows NT, ранее работала в Digital Equipment Corporation. Они занимались в DEC разработкой инструментария для операционной системы VAX / VMS , и у них уже были навыки и готовый код для работы с исполняемыми файлами, представленными в формате Common Object File Format ( COFF ). Соответственно, формат COFF в слегка модифицированном виде был перенесен в Windows NT и получил название PE.

В ". NET Framework Glossary " сказано, что PE - это реализация Microsoft формата COFF . В то же время в утверждается, что PE - это формат исполняемых файлов, а COFF - это формат объектных файлов . Вообще, мы можем наблюдать путаницу в документации Microsoft относительно названия формата. В некоторых местах они называют его COFF , а в некоторых - PE. Правда, можно заметить, что в новых текстах название COFF используется все меньше и меньше. Более того, формат PE постоянно эволюционирует. Например, несколько лет назад в Microsoft отказались от хранения отладочной информации внутри исполняемого файла, и поэтому теперь многие поля в структурах формата COFF просто не используются. Кроме того, формат COFF - 32-разрядный, а последняя редакция формата PE (она называется PE32+) может использоваться на 64-разрядных аппаратных платформах. Поэтому, видимо, дело идет к тому, что название COFF вообще перестанут использовать.

Интересно отметить, что исполняемые файлы в устаревших форматах NE и LE до сих пор поддерживаются Windows . Исполняемые файлы в формате NE можно запускать под управлением NTVDM (NT Virtual DOS Machine), а формат LE используется для виртуальных драйверов устройств (

Большинство пользователей современных компьютерных систем, так или иначе, сталкиваются с запуском программ, которые в большинстве своем сводятся к тому, чтобы исполнить исполняемый файл. Грубо говоря, во всех программах для запуска основного приложения используется объект формата EXE. Но это не всегда так.

В устаревших ОС вроде DOS или отличных от Windows такие файлы могут иметь совершенно другое расширение, хотя принцип старта остается абсолютно неизменным.

Исполнить исполняемый файл: что это значит?

Для полного понимания сути происходящего сначала стоит разобраться с тем, что собой представляет любой процесс запуска приложения. Тот же исполняющий файл «Навител» или любой другой программы представляет собой некий апплет, в котором прописан код запуска, распознаваемый операционной системой или дополнительными приложениями, для этого предназначенными. Но тут стоит понимать, что программы, состоящие исключительно из одного исполняемого файла, сегодня неактуальны. Как правило, в пакет включается еще огромное количество сопутствующих компонентов в виде тех же динамических библиотек, имеющих расширение DLL. Как раз-таки без них исполнить исполняемый файл возможно не всегда.

Суть в том, что при запуске основного модуля программного пакета, который и состоит в старте EXE-файла, некоторые приложения требуют «подгрузки» дополнительных модулей, которые как раз и являются файлами настроек конфигурации (config) или тех же динамических библиотек, содержащих данные о программе.

Кстати, иногда сами динамические библиотеки способны исполнять роль программ. Так, например, старт любого VST-инструмента в современной студии (DAW) происходит именно по этому принципу. Программа как таковая в виде версии Standalone может отсутствовать, но плагин в виде ее аналога с расширением DLL распознается любой программой.

Программы-исполняемые файлы: типы

Но и это еще не все. Расширение исполняемых файлов сегодня определить не так и просто, не говоря уже о файлах формата EXE или COM. Отдельно стоит отметить не только упомянутые выше стандарты, но и архивные данные.

По сути, архивы формата SFX (Self-Extracting) представляют собой самостоятельно извлекаемые данные на основе срабатывания алгоритма распаковки. такого типа проще простого. Достаточно лишь сделать двойной клик, и операция при выборе места извлечения будет произведена автоматически. На мобильных устройствах используются форматы вроде JAR, JAD APK и т. д., относящиеся к разряду установщиков.

Можно ли открыть исполняемые файлы?

Многих пользователей интересует вопрос редактирования запускаемых файлов. Сразу же стоит всех огорчить. Дело в том, что те же «экзешники» представляют собой компилированные программы, исходный код которых обычно просмотреть невозможно. Можно, конечно, применить утилиты вроде Disassembler, но и они при условии написания приложения изначально на языке C++ этого результата могут и не дать.

Как произвести простейшее редактирование?

Как уже понятно, EXE-файл в его читабельном виде открыть невозможно, поскольку сама же программа может быть написана на разных языках программирования. То же самое касается и динамических библиотек. Зато файлы конфигурации открыть можно даже в стандартном «Блокноте». А если его запустить от имени админа, можно установить даже запреты доступа к некоторым сайтам в Интернете, а после этого сохранить конфигурацию, что в обычном режиме не представляется возможным. Те же самые «конфиги» редактируются элементарно.

Можно ли сделать любой файл исполняемым?

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

Достаточно внести процесс в список и указать сопутствующий объект, который будет загружаться немедленно (например, открытие документа Office). Сделать файл исполняемым - это еще далеко не самое главное.

Резюме

Таким образом, завершая тему, стоит отметить, что файлы или объекты, отвечающие за старт какого-нибудь приложения, в стандартном варианте открыть можно только двойным кликом. А вот редактировать их не представляется возможным. Правда, если программы имеют статус свободно распространяемых по лицензии GNU, вносить изменения в программный код приложений можно очень даже запросто.

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

И вызов (запуск) исполняемого файла в данном случае уже может не зависеть от самого пользователя, поскольку вирус внедрился в систему. Остается только уповать на универсальные программы в виде портативных версий или же на утилиты модификаций Rescue Disk с загрузкой и проверкой системы еще до начала старта Windows.

Исполняемый файл как таковой, что самое интересное, в загрузчике отсутствует. Зато есть конфигуратор BIN, который и отвечает за старт системы. Кроме того, в устаревших версиях Windows можно встретить еще и папки вроде i386, в которых располагаются драйверы и некоторые другие сопутствующие утилиты. Но в новых версиях системы таких объектов нет.

Любой юзер компьютерной системы, так или иначе, сталкивался с понятием исполняемого файла программы. И не всегда (хотя и очень часто) исполняемые файлы имеют расширение EXE, общепринятое для Windows-систем. Чтобы разобраться в вопросе расширений, рассмотрим общую информацию о таких объектах и некоторые их основные типы.

Отличия исполняемых файлов от других объектов

Прежде чем утверждать, что исполняемый файл программы имеет расширение только лишь одного определенного типа, следует разобраться с тем, как отличить такой объект от других.

На самом деле, среди основных отличий исполняемых файлов от других информационных данных выделяют несколько основных:

  • само расширение, указывающее на содержание в файле либо машинного, либо байт-кода виртуальной машины;
  • сигнатура (содержимое в виде уникальных байт-последовательностей);
  • атрибуты в файловой системе (execute и др.).

К сожалению, даже если знаешь, что исполняемые файлы имеют расширение имени, например, EXE, просмотреть содержимое обычными средствами не получится, поскольку такие объекты обладают компилированным содержимым, которое при просмотре отображается в виде бессмысленного набора символов. В лучшем случае придется использовать средства Disassembler или что-то еще, позволяющее произвести декомпиляцию. Но сейчас не об этом.

Структура исполняемых файлов

Что касается построения файлов такого типа, как правило, они содержат заголовки (предполагаемое исполнение инструкций, параметры, форматы кода), сами инструкции (машинные, исходные или байт-коды).

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

Принцип работы

Собственно, несмотря на то, что исполняемые файлы имеют расширение разного типа, работают они похожим образом.

При запуске исполняемый файл загружается в память компьютера. При этом происходит инициализация и настройка окружения, «подтягивание» дополнительных библиотек, если применение таких предусмотрено программой, настройка некоторых дополнительных операций и само исполнение инструкций методами, прописанными в файле.

Какое расширение имеют исполняемые файлы программ?

Теперь подходим непосредственно к вопросу расширений. Само собой разумеется, что абсолютно все привести не получится (это займет уж слишком много времени). С другой стороны, можно отметить наиболее популярные и самые распространенные.

Итак, в зависимости от типа содержимого и задается расширение. Так, например, в Windows самые распространенные исполняемые файлы имеют расширение EXE. Это относится ко всем программам, рассчитанным на работу в среде этих операционных систем. Такие объекты содержат Очень похожими (тоже с содержанием таких кодов) являются файлы BIN.

Еще одним типом исполняемых файлов являются пакетные объекты типа CMD, BAT и COM, причем первый тип является Windows, а второй и третий относятся к системам DOS.

Вероятно, многие встречали и файлы MSI и MSU. Это может быть либо «родной» инсталлятор Windows, либо установщик апдейтов системы.

Кроме всего прочего, отдельную категорию составляют скрипты и макросы (VB, VBS, VBE, SCR, JS, JSE). Еще часто встречаются файлы вроде JAR и JAD, предназначенные для установки приложений на мобильные гаджеты или использование в среде JAVA. Все такие объекты в содержании имеют уже не машинные коды, а коды виртуальных машин.

Какое расширение имеют исполняемые файлы в разных системах?

Если посмотреть внимательно, можно заметить, что в некоторых системах встречаются и достаточно специфичные компоненты. Например, в Windows имеется специальная категория исполняемых компонентов (PS1 - исполняемый файл PowerShell, PIF - информация о приложениях, WSF - файл сценария и т. д.).

Вообще, в любой системе можно найти и стандартные, и специальные компоненты. Однако есть и некоторые общие форматы (например, HTA - исполняемый документ HTML), которые работают везде и независимо от применяемой «операционки».

Что же касается других систем, например, в «маках» исполняемые файлы имеют расширение APP, если это программы, и PKG, если это дистрибутив.

А вот с Linux-системами дело обстоит несколько иначе. Дело в том, что в них понятие расширения отсутствует как таковое. Распознать исполняемый файл можно только по атрибутам (скрытый, только для чтения, системный и т. д.). Таким образом, отпадает даже проблема изменения расширений, чтобы запустить или прочитать искомый файл.

Впрочем, в любой системе или даже в мобильных гаджетах можно найти огромное количество объектов такого типа. Далеко ходить не нужно. В той же ОС Android исполняемый файл установщика имеет расширение APK, а в «яблочных» девайсах это файлы IPA.

Заключение

Вот вкратце и все, что касается расширений исполняемых файлов. Конечно, в данном случае упор делался в основном на объекты, присутствующие в Windows-системах, а остальные были затронуты вскользь и, так сказать, для общего развития. И, как уже понятно, разнообразие объектов исполняемого типа настолько велико, что привести какую-то сводную таблицу с указанием абсолютно всех расширений просто не представляется возможным, поэтому мы ограничились наиболее распространенными форматами.

Вконтакте несомненно является очень распространенной социальной сетью, где люди не только переписываются друг с другом, но также и обмениваются различными файлами. В связи с этим многие пользователи данной социальной сети зачастую сталкиваются с проблемой, когда во время попытки прикрепления файла к сообщению появляется ошибка с текстом «Не удалось загрузить файл. Файл не должен быть исполняемым, а его размер не должен превышать 200 МБ».

Если с размером файла все понятно, то вот что значит «Файл не должен быть исполняемым» знает далеко не каждый.

В данной статье мы расскажем что такое исполняемый файл и что делать, чтобы обойти данное предупреждение.

Исполняемый файл — что это?

Исполняемый файл это файл, который содержит для компьютера готовый набор команд, который можно сразу загрузить в память и приступить к его исполнению.

Как правило это файлы с расширением.exe, .bat, .com.

Также иногда вконтакте не хочет загружать архивы, в которых запакованы.exe файлы, ссылаясь на всю ту же ошибку.

Связано это с вопросами безопасности, ведь.exe файлы являются первыми по популярности в рейтинге по подвержению заражению вирусами. И чтобы хоть как — то снизить риск распространения компьютерных вирусов через вконтакте разработчики решили попросту запретить передавать друг другу самый подверженный заражению тип файла — исполняемый файл.

Как обойти ошибку?

Обойти данное ограничение достаточно просто. Нужно всего лишь на одно из разрешенных, например.doc, отправить его адресату и сказать, чтобы он после скачивания файла поменял расширение обратно на то, которое было у файла изначально.

Смена расширения у файла

Из альтернативных способов можно отметить загрузку файла, который отказывается загружать вконтакте, на любое облачное хранилище типа Яндекс диска или Гугл диска, а затем отправку ссылки на него адресату вконтакте.


Лучший способ отблагодарить автора статьи- сделать репост к себе на страничку