Stavo leggendo su chmod e le sue modalità ottali. Ho visto quel 1
viene eseguito solo. Qual è un caso d'uso valido per un'autorizzazione di sola esecuzione? Per eseguire un file, in genere si vorrebbe leggere ed eseguire il permesso.
$ echo 'echo foo' > say_foo
$ chmod 100 ./say_foo
$ ./say_foo
bash: ./say_foo: Permission denied
$ chmod 500 ./say_foo
$ ./say_foo
foo
Risposta accettata:
Script di shell richiedono l'autorizzazione di lettura per essere eseguiti, ma file binari non:
$ cat hello.cpp
#include<iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
$ g++ -o hello hello.cpp
$ chmod 100 hello
$ ./hello
Hello, world!
$ file hello
hello: executable, regular file, no read permission
Visualizzare il contenuto di un file ed eseguirlo sono due cose diverse. Con gli script di shell, queste cose sono correlate perché vengono "eseguite" "leggendole" in una nuova shell (o in quella attuale), se perdonerai la semplificazione. Questo è il motivo per cui devi essere in grado di leggerli. I binari non usano questo meccanismo.
Per le directory, il permesso di esecuzione è leggermente diverso; significa che puoi fare cose ai file all'interno quella directory (ad es. leggerli o eseguirli). Quindi supponiamo che tu abbia una serie di strumenti in /tools
che vuoi che le persone possano usare, ma solo se ne sono a conoscenza. chmod 711 /tools
. Quindi le cose eseguibili in /tools
può essere eseguito in modo esplicito (ad es. /tools/mytool
), ma ls /tools/
sarà negato. Allo stesso modo, i documenti possono essere archiviati in /private-docs
che potrebbe essere letto se e solo se si conoscono i nomi dei file.