La regola precisa è: puoi attraversare una directory se e solo se hai il permesso di eseguirla.
Ad esempio, per accedere dir/subdir/file, è necessario eseguire le autorizzazioni su dire dir/subdir, oltre alle autorizzazioni su fileper il tipo di accesso desiderato. Entrando nei casi angolari, non sono sicuro che sia universale che sia necessario eseguire l'autorizzazione sulla directory corrente per accedere a un file attraverso un percorso relativo (lo si fa su Linux).
Il modo in cui accedi a un file è importante. Ad esempio, se si dispone di autorizzazioni di esecuzione su /foo/barma non su /foo, ma la directory corrente è /foo/bar, è possibile accedere ai file /foo/bartramite un percorso relativo ma non tramite un percorso assoluto. Non è possibile passare a /foo/barin questo scenario; un processo più privilegiato ha presumibilmente fatto cd /foo/barprima di passare senza privilegi. Se un file ha più collegamenti fisici, il percorso utilizzato per accedervi determina i vincoli di accesso.
I collegamenti simbolici non cambiano nulla. Il kernel utilizza i diritti di accesso del processo di chiamata per attraversarli. Ad esempio, se symè un collegamento simbolico alla directory dir, è necessario eseguire l'autorizzazione dirper accedere sym/foo. Le autorizzazioni sul link simbolico stesso possono o meno dipendere dal sistema operativo e dal file system (alcuni li rispettano, altri li ignorano).
La rimozione dell'autorizzazione di esecuzione dalla directory principale limita efficacemente un utente a una parte dell'albero della directory (in cui deve essere modificato un processo più privilegiato). Ciò richiede che gli elenchi di controllo di accesso siano utili. Ad esempio, se /e /homesono vietati a joe( setfacl -m user:joe:0 / /home) ed /home/joeè joela home directory, joenon sarà in grado di accedere al resto del sistema (incluso l'esecuzione di script shell con /bin/sho binari collegati dinamicamente che devono accedere /lib, quindi ' d necessità di approfondire l'uso pratico, ad es setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib.).
L'autorizzazione di lettura su una directory dà il diritto di enumerare le voci. Dare il permesso di esecuzione senza dare il permesso di leggere è occasionalmente utile: i nomi delle voci servono come password per accedervi. Non riesco a pensare a nessun uso nel dare l'autorizzazione di lettura o scrittura a una directory senza autorizzazione di esecuzione.