Come già detto in precedenza, la colorazione indica se i file sono considerati eseguibili o meno.
L'autorizzazione "esegui" (= bit) in Linux e nella maggior parte degli altri Unix ha un significato per i file e un altro per le directory.
Per le directory, se si dispone dell'autorizzazione di esecuzione, è possibile visualizzarne il contenuto. In caso contrario, non è possibile eseguire il cd nella directory, né è possibile elencare i file in essa contenuti, anche se si dispone sia dell'accesso in lettura che in quello alla scrittura.
Per i file regolari (a differenza dei file di dispositivo e di altri tipi di file Unix speciali), il bit di esecuzione indica che se si utilizza il nome file sulla riga di comando, l'O / S (o più precisamente: shell) proverà a "eseguire" o eseguire il file come comando. Al contrario, se non si dispone dell'autorizzazione di esecuzione per il file, non è possibile eseguirlo dalla riga di comando.
Quindi, se, ad esempio, rimuovete l'autorizzazione x da tutti gli utenti sul file / bin / cat (che è un comando Unix) voi stessi o chiunque altro e qualsiasi programma che tenta di usare il comando "cat" fallirà.
Questi sono quindi i comandi del sistema operativo, come "cat" e "grep", che hanno normalmente file eseguibili in / * / bin / directory - / bin, / usr / bin, / sbin, / usr / sbin ecc.
E poi ci possono essere script interpretati non compilati, che sono scritti in qualche linguaggio di programmazione, come Python o script di shell (fondamentalmente, comandi che scrivi come da linea di comando quando si invia al server).
Ora, quando si imposta il bit di esecuzione sul file di script (ad esempio, il file foobar) e si tenta di eseguirlo con la shell: "./foobar", la shell tenta di analizzare il file e trovare il programma corretto per passare lo script per.
Questo fa la shell provando a leggere la prima riga del file e trovando la notazione "shebang" di quale programma dovrebbe essere eseguito.
Quindi, se il tuo foobar era un file di testo con la prima riga in questo modo:
#!/usr/bin/python
Quindi la shell tenterebbe di eseguire il comando /usr/bin/python foobar
:, fondamentalmente invocando l'interprete python e passandogli il nome del tuo file foobar come script Python.
Se la shell non trova tale prima riga nel tuo file, tenta quindi di eseguire foobar come se contenesse i comandi della shell.
Se il file con bit eseguibile non contiene comandi di shell validi, la shell si lamenterebbe semplicemente.
Quindi questo è ciò che accadrebbe, se si hanno file TTF con il bit exec impostato e si tenta di eseguirlo dalla riga di comando:
$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$
Quindi, per i caratteri, è probabilmente più ordinato, se il bit exec non è impostato, ma non cambia nulla.
PS Solo alcune informazioni estranee. Se rimuovi il bit di esecuzione su un comando o uno script, potrebbe comunque essere passato a qualsiasi altro programma come argomento. Se quell'altro programma lo sa, come eseguire il comando, la rimozione di exec bit non ha importanza. Ad esempio, lo script Python foobar verrebbe comunque eseguito dall'interprete Python, se lo facessi semplicemente dalla riga di comando:
$python foobar
invece di
$./foobar
Lo stesso con l'esempio dei comandi di sistema, come "cat". Se si rimuove il bit exec da "cat", è comunque possibile passarlo a una nuova istanza della shell per l'esecuzione:
$sh -c 'cat myfile'
funzionerà, anche se hai rimosso exec bit da cat e
$cat myfile
non lo fa.