Perché chmod 644 rende le directory inaccessibili?


8

Ho un sacco di file multimediali (che devono essere solo 644) che erano un mix di varie autorizzazioni. Alcuni erano di gruppo o scrivibili in tutto il mondo, quindi ho pensato, per sicurezza, li riporterò tutti al 644.

Il problema è che esiste una gerarchia di directory e per tutte le directory catturate in questo ls -lvengono visualizzate come:

d????????? ? ? ? ?            ? Dirname

Se lo chmod a 744, è risolto.

La mia domanda è: cosa sta succedendo qui? Le directory devono essere eseguibili?

Risposte:


7

Come indicato nella manpage per in chmodrelazione alle autorizzazioni:

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)

Il bit eseguibile su una cartella è spiegato sopra come un'autorizzazione "cerca"; cioè il bit di esecuzione consente semplicemente di accedere alla cartella in un browser di file o di spostarsi nella cartella dal terminale eseguendo il cdcomando o eseguendo ls ~/folderper elencare i file nella cartella.

La cartella deve essere eseguibile per il proprietario , anche se il superutente sarebbe comunque in grado di accedere alla cartella come quando è sudopossibile accedere o eliminare qualsiasi file o directory. Inoltre, le autorizzazioni per directory e file sono spiegate ulteriormente in questo utile articolo su Stackoverflow .

È anche importante notare che "eseguire" la cartella non significa che si stia eseguendo effettivamente alcun codice o comando come quando si esegue un binario o uno script eseguibile.

Per un utente desktop di casa (anche se forse non per il tuo server) la maggior parte delle cartelle all'interno $HOMEha l'autorizzazione di esecuzione impostata per utente, gruppo e altro se visualizzato con stat ~/myfolder(estratto di seguito):

Access: (0755/drwxr-xr-x)  Uid: ( 1000/    mike)   Gid: ( 1000/    mike)

Le autorizzazioni standard per le cartelle all'interno $HOME sono 755 o 775 e per i file sono 644. Tuttavia, il resto del filesystem sarà diverso. Anche in questo caso, le cartelle devono avere il bit di esecuzione per il proprietario o non potranno essere aperte da lui. È importante stare attenti chmodquando si cambiano le autorizzazioni e in particolare quando lo si fa in modo ricorsivo poiché la situazione può rapidamente incasinarsi.

Per ulteriori informazioni, consultare man chmodle manpage di Ubuntu online e questo articolo su Superuser .


0

Le directory necessitano di xset di bit (per la directory quel bit è visto come bit di ricerca) per aprirsi. Molte persone scoprono che quando rimuovono il bit eseguibile con chmod -Rsull'intera cartella, non possono più accedervi. Per risolvere questo problema, utilizzo in treemodo da ottenere solo la cartella impostata ed evitare l'incubo di avere tutti i file impostati come file eseguibili (l'opzione per l'albero è -d List directories only.):

sudo tree -faid dirname | xargs -L1 -I{} sudo chmod +x "{}"

se non hai tree:

find  dirname -type d -exec chmod +x {} 

Avvertimento!!! dovresti tenerlo in considerazione:

  • l'uso di chmod o chown ricorsivo nella /directory principale o nelle directory di sistema distruggerà il sistema operativo (in realtà qualsiasi cosa ricorsiva nella /directory o nelle directory di sistema è pericolosa)

  • questa non è una buona pratica di sicurezza per imporre tali autorizzazioni in blocco


@Melebius Ok grazie, sono contento che siamo arrivati ​​a un'intesa
Eduard Florinescu,
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.