Как сделать файл исполняемым в 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. Чтобы установить флаг исполняемости, щелкните правой кнопкой мыши на файле или скрипте, выберите «Свойства» в контекстном меню, затем перейдите на вкладку «Права» и поставьте галочку напротив «Разрешить выполнение файла как программы». Теперь файл будет выполняться непосредственно из менеджера файлов. Вуаля, готово. Теперь у вас не возникнет проблем с запуском программ и скриптов из интернета.
Делаем файл исполняемым в 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. Кликните правой кнопкой по нашему объекту программы или скрипта, чтобы открыть контекстное меню, затем выберите свойства:
Переходим на вкладку права и устанавливаем галочку «Разрешить выполнение файла как программы»:
Теперь он будет запущен системой непосредственно из менеджера. Вот и вся инструкция. Теперь с запуском программы или скрипта из интернета у вас не возникнет трудностей.
How to make a file (e.g. a .sh script) executable, so it can be run from a terminal
I have a script.sh file and type of this file is shellscript file. I want to make this file as application/x-executable file. How can I make it?
4 Answers 4
You can mark the file as executable:
You can then execute it like this:
If you want to use a different command to start it, you can add an alias:
Add this at the end of the file:
Open a new terminal session or type source
/.bashrc in your terminal to apply. Then simply use the new name to start the script.
There are two ways of making a file executable:
GUI Method:
Right-click the file and select Properties. Go to the permissions tab, then tick the box Execute: [ ] Allow executing file as program or in Nautilus Program: [ ] Allow this file to run as a program in Thunar.
Terminal / Command method:
You can either use:
chmod +x filename.extension
chmod +x /path/to/your/filename.extension
chmod does also have some more advanced options:
The spaces are to show that it is split up: — rwx — —
The first set of — is User. The second is Group and the last is Other (anyone else)
r stands for Read, w for Write and x for eXecute.
So to allow everyone to read it, but only Group to execute and User to read and write it (but for some reason not execute) would be:
-rw- rx- r— But this would be added to the command as:
chmod +rw-rx-r— /path/to/file.extension
chmod also can do this in numbers. It is based on binary (I think, as it is 1,2 and 4)
So there are these numbers:
Execute by user is 100 . Execute by group is 010 . Execute by other is 001 .
Write by user is 200 . Write by group is 020 . Write by other is 002 .
Read by user is 400 . Read by group is 040 . Read by other is 004 .
Then you add these together to get the desired combination.
So to allow everyone to read it, but only Group to execute and User to write it (but for some reason not execute) would be:
400 + 040 + 004 and 010 and 200
That adds up to 600 + 050 + 004 = 654.
You could then run the command.
chmod +654 /path/to/file.extension to set it.
And to set all permissions you can type:
chmod +rwxrwxrwx /path/to/file.extension
Or (this is a bit easier to write, but harder to remember each one):
chmod +777 /path/to/file.extension
Finally, you can do:
chmod -777 /path/to/file.extension
To take all permissions away from everyone.
chmod +300 /path/to/file.extension
To add read and write for user, without affecting any other permissions (e.g. Execute permissions).
This website has a very useful little grid checkbox thing, whereby you can tick the options you want and it gives you the command:
However, not all the possible combinations are sensible to use; the main ones that are used are the following:
Как сделать файл исполняемым в Linux
Операционная система Linux, в отличие от Windows, определяет какие файлы являются программами не по расширению, а по специальному флагу исполняемости. У каждого файла есть три основных флага, чтение, запись и исполнение. Они определяют что система может делать с этим файлом.
Когда вы загружаете различные установщики программ из интернета или создаете скрипт в текстовом редакторе, для них устанавливаются флаги по умолчанию — только чтение и запись. Вы не сможете запустить такой файл как программу, с ним нужно сделать еще кое-что. В этой статье мы рассмотрим как сделать файл исполняемым в Linux.
Что такое исполняемость?
Уже много написано о том, как установить флаг исполняемости. Но что происходит с файлом во время этого, что такое исполянемость и как это работает?
Программа — это набор инструкций, которые по очереди выполняет процессор над данными, чтобы получить определенный результат. Но это вы, наверное, уже знаете.
На самом деле для процессора нет разницы между данными и инструкциями. И те и другие состоят из байт, проще говоря цифр. Когда-то договорились, что определенные сочетания цифр будут означать то или иное действие процессора, а во всем остальном это те же данные. Поэтому для процессора нет никакой разницы что выполнять — исполняемый файл linux или обычный текстовый файл. Оба могут быть успешно выполнены, вот только во втором варианте инструкции не имеют никакого смысла.
Чтобы система могла определить какие файлы нужно выполнять, а какие лучше не надо и был придуман флаг исполняемости. По сути, флаг исполяемости — это несколько байт в файловой системе, которые говорят нужно выполнять файл или нет, само содержимое файла никак не изменяется. Со скриптами все работает точно так же, только команды из файла выполняет не процессор, а интерпретатор, например, в bash скриптах — сама оболочка bash. Да и в обычных программ тоже есть свой загрузчик — это ld-linux.so.2.
Как сделать файл исполняемым в Linux?
В операционной системе Linux, для управления флагами файлов используется утилита chmod. Синтаксис вызова утилиты:
$ 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. И если нужно будет запустить скрипт или установщик из интернета, у вас не возникнет никаких проблем. Если остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.