Perché una cartella deve essere eseguibile?


29

Autorizzazione per i file:

chmod 664 myFile // rw-rw-r--

E per le cartelle:

chmod 774 myFolder // rwxrwxr--

Se utilizzo solo l'autorizzazione "lettura e scrittura", le cartelle non mostreranno il loro contenuto.

Qual è la ragione di questo?

Risposte:


14

Poiché non è possibile "eseguire" una directory, il bit di esecuzione è stato utilizzato in modo migliore. Il bit di esecuzione in una directory consente di accedere agli elementi all'interno della directory, anche se non è possibile elencare il contenuto delle directory.

$ mkdir -p dir/
$ echo 'Hello World!' > dir/file
$ chmod 000 dir/
$ ls -al dir/
ls: cannot open directory dir: Permission denied
$ cat dir/file
cat: dir/file: Permission denied
$ chmod +x dir/
$ ls -al dir/
ls: cannot open directory dir: Permission denied
$ cat dir/file
Hello World!

Dalla chmodmanpage:

Le lettere rwxXst selezionano i bit della modalità file per gli utenti interessati: leggi (r), scrivi (w), esegui (o cerca directory) (x) , esegue / cerca solo se il file è una directory o ha già i permessi di esecuzione per alcuni utente (X), impostare l'ID utente o gruppo sull'esecuzione (i), flag di cancellazione limitato o bit appiccicoso (t).


42

Le directory (in genere non sono chiamate cartelle in * nix) hanno un significato diverso per i bit di autorizzazione rispetto ai normali file.

Per le directory, write consente di creare nuovi file al suo interno.

Leggi consente di elencare i file al suo interno.

Execute ti permette di inserirlo e accedere ai file (o altre directory) all'interno.


2
Un modo semplice per ricordare è immaginare l'esecuzione come un doppio clic su qualcosa. Quando fai doppio clic sulla directory (o cd) la inserisci (esegui).
John T

Ricorda che il semplice accesso in scrittura su una directory non ti consente di creare nuovi file. Per farlo è necessario anche il permesso di esecuzione sulla directory.
Matthias Braun,

"Accedi ai file (o altre directory)" significa che posso vedere i file, cioè elencarli ma non posso visualizzarli o posso vedere i file, cioè elencarli e anche leggerli?
vadasambar,

2

Le autorizzazioni di esecuzione su una directory consentono di attraversarlo, per l'utilizzo delle risorse contenute al suo interno.


1

Il bit "esegui" in realtà significa "ricerca" quando applicato alle directory (da man chmod). Ciò sembra ragionevole poiché execute non ha alcun significato per una directory.


0

Il xbit in una cartella si riferisce all'indicizzazione / ricerca / elenco delle directory; nessuno di questi è possibile se si mantiene quel bit basso.

Ecco un esempio del suo utilizzo: se vuoi avere un utente con permessi di lettura limitati su ogni directory tranne la sua home, diciamo /home/dummy, allora devi creare /e /homeavere il xbit impostato, altrimenti non può nemmeno arrivare alla sua home directory.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.