Como as respostas anteriores disseram, a coloração serve para indicar se os arquivos são considerados executáveis ou não.
A permissão "executar" (= bit) no Linux e na maioria dos outros Unixes tem um significado para os arquivos e outro para os diretórios.
Para diretórios, se você tiver permissão de execução, poderá ver seu conteúdo.
Se você não fizer isso, não poderá fazer o cd para o diretório, nem poderá listar arquivos nele, mesmo se tiver acesso de leitura e gravação ao diretório.
Para arquivos regulares (ao contrário de arquivos de dispositivos e outros tipos especiais de arquivos Unix), o bit de execução significa que se você usar o nome do arquivo na linha de comando, o O / S (ou mais precisamente: shell) tentará "executar "ou execute o arquivo como um comando. Por outro lado, se você não tiver permissão de execução no arquivo, não poderá executá-lo a partir da linha de comando.
Portanto, se você, por exemplo, remover a permissão x de todos os usuários no arquivo / bin / cat (que é um comando Unix) você ou qualquer outra pessoa e qualquer programa que tente usar o comando "cat" falhará.
Esses são, então, os comandos do sistema operacional, como "cat" e "grep", que possuem arquivos executáveis normalmente em / * / bin / diretórios - / bin, / usr / bin, / sbin, / usr / sbin etc .
E então pode haver scripts não compilados e interpretados, que são escritos em alguma linguagem de programação, como Python ou shell scripts (basicamente, comandos que você escreve como se de uma linha de comando ao sshing para um servidor).
Agora, quando você definir o bit de execução no arquivo de script (por exemplo, arquivo foobar) e tentar executá-lo pelo seu shell: "./foobar", o shell tentará analisar o arquivo e localizar o programa correto. passe o script para.
Isso ocorre quando o shell tenta ler a primeira linha do arquivo e encontrar a notação "shebang" qual programa isso deve rodar.
Então, se o seu foobar era um arquivo de texto com a primeira linha assim:
#!/usr/bin/python
Então o shell tentaria executar o comando: /usr/bin/python foobar
, basicamente invocando o interpretador python e passando o nome do seu arquivo foobar para ele como um script Python.
Se o shell não encontrasse essa primeira linha em seu arquivo, ele tentaria executar o foobar como se contivesse comandos shell.
Se o arquivo com bit executável não contiver comandos shell válidos, o shell simplesmente iria reclamar.
Então, isso é o que aconteceria se você tivesse arquivos TTF com exec bit set e tentasse executá-los a partir da linha de comando:
$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$
Portanto, para fontes, é provavelmente mais simples, se o bit exec não estiver definido, mas realmente não muda nada.
P.S. Apenas alguma informação estranha. Se você remover o bit de execução em algum comando ou script, ele ainda pode ser passado para qualquer outro programa como um argumento.
Se esse outro programa sabe, como executar o seu comando, a sua remoção do bit exec realmente não importa. Por exemplo, o script foobar do foobar ainda seria executado pelo interpretador Python, se você simplesmente fizesse da linha de comando:
$python foobar
em vez de
$./foobar
Mesmo com o exemplo dos comandos do sistema, como "cat". Se você remover o bit exec de "cat", ainda poderá passá-lo para uma nova instância do shell para execução:
$sh -c 'cat myfile'
funcionará, mesmo que você tenha removido o exec bit do cat e
$cat myfile
não.