Как говорилось в предыдущих ответах, раскраска указывает, считаются ли файлы исполняемыми или нет.
Разрешение «выполнить» (= бит) в Linux и большинстве других Unixes имеет одно значение для файлов, а другое - для каталогов.
Для каталогов, если у вас есть разрешение на выполнение, вы можете увидеть его содержимое. Если вы этого не сделаете, вы не сможете перейти в каталог и не можете перечислить в нем файлы, даже если у вас есть права на чтение и запись в каталог.
Для обычных файлов (в отличие от файлов устройств и других специальных типов файлов Unix) бит выполнения означает, что если вы используете имя файла в командной строке, O / S (или, точнее: shell) попытается «выполнить» или запустить файл как команда. И наоборот, если у вас нет разрешения на выполнение файла, вы не можете запустить его из командной строки.
Так что, если вы, например, удалите разрешение x у всех пользователей в файле / bin / cat (что является командой Unix), вы сами или кто-либо еще, и любая программа, которая пытается использовать команду «cat», потерпит неудачу.
Это команды ОС, такие как «cat» и «grep», которые обычно имеют исполняемые файлы в / * / bin / каталогах - / bin, / usr / bin, / sbin, / usr / sbin и т. Д.
Кроме того, могут существовать некомпилированные интерпретируемые сценарии, написанные на каком-либо языке программирования, например Python или сценариях оболочки (в основном, команды, которые вы пишете, как будто из командной строки при подключении к серверу).
Теперь, когда вы установите бит выполнения в файле сценария (например, в файле foobar) и попытаетесь выполнить его с помощью своей оболочки: «./foobar», оболочка попытается проанализировать файл и найти правильную программу для передачи сценария. к.
Это делается оболочкой, пытаясь прочитать первую строку файла и найти нотацию «shebang», какую программу предполагается запустить.
Итак, если ваш foobar был текстовым файлом с первой строкой, подобной этой:
#!/usr/bin/python
Затем shell попытается выполнить команду:, в /usr/bin/python foobar
основном вызывая интерпретатор python и передавая ему имя вашего файла foobar как скрипт Python.
Если оболочка не найдет такую первую строку в вашем файле, она попытается выполнить foobar, как если бы она содержала команды оболочки.
Если файл с исполняемым битом не содержит допустимых команд оболочки, оболочка будет просто жаловаться.
Вот что произойдет, если у вас есть файлы TTF с установленным битом exec и вы пытаетесь запустить его из командной строки:
$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$
Таким образом, для шрифтов, вероятно, лучше, если бит exec не установлен, но ничего не меняет.
PS Просто посторонняя информация. Если вы удалите бит выполнения для какой-либо команды или сценария, он все равно может быть передан любой другой программе в качестве аргумента. Если та другая программа знает, как выполнить вашу команду, удаление бита exec на самом деле не имело значения. Например, скрипт Python foobar все равно будет запускаться интерпретатором Python, если вы просто сделали это из командной строки:
$python foobar
вместо того
$./foobar
То же самое с примером системных команд, таких как «cat». Если вы удалите бит exec из «cat», вы все равно можете передать его в новый экземпляр оболочки для выполнения:
$sh -c 'cat myfile'
будет работать, даже если вы удалили бит exec из cat и
$cat myfile
не делает.