chmod -R rende i file nelle cartelle secondarie utilizzabili per qualche motivo


22

Stavo regolando le autorizzazioni durante l'impostazione di alcuni temi di WordPress, e ho funzionato chmod 664 -R theme-dir/*Ha funzionato bene sui file nella directory principale della directory, ma tutti i file nelle sottodirectory ora leggono così quando io ls -l:

?---------  ? ? ? ?            ? core_functions.php
?---------  ? ? ? ?            ? css
?---------  ? ? ? ?            ? custom_functions.php
?---------  ? ? ? ?            ? images
?---------  ? ? ? ?            ? import_settings.php
?---------  ? ? ? ?            ? js
?---------  ? ? ? ?            ? options_trim.php
?---------  ? ? ? ?            ? page_templates
?---------  ? ? ? ?            ? post_thumbnails_trim.php
?---------+ ? ? ? ?            ? shortcodes

Non riesco a eseguire il cd in nessuna delle sottodirectory e non riesco nemmeno a eliminarle. Non ho mai visto niente del genere, qualcuno ha mai incontrato qualcosa di simile?


sembra un file system corrotto ..
alexus

1
corsachmod -R u+rwX,go+rX,go-w theme-dir/*
Dusan Bajic,

@ dusan.bajic Ha funzionato, grazie. Comunque non ho idea del perché sia ​​successo in primo luogo.
Sal

5
@alexus no corruzione, solo perms
pulcini

Penso di aver visto qualcosa del genere quando ho fatto chown 644 (o qualsiasi altra cosa) contro chmod, ma in realtà non ho voglia di testare di nuovo su un sistema funzionante
Foon,

Risposte:


49

L'accesso ai contenuti (o più specificamente ai metadati dei file ad eccezione del nome file) di una directory richiede che la directory abbia il bit di esecuzione impostato.

Il tuo chmod ricorsivo ha rimosso tale autorizzazione, quindi hai perso l'accesso. Se stai usando l' -Ropzione di chmodè meglio evitare di usare la versione numerica delle autorizzazioni, ed esegui invece (usando lo stato desiderato come esempio) chmod -R ug=rwX,o=rX. La X maiuscola significa impostare il bit X solo su directory o file che hanno almeno un xset. Inoltre potresti voler usare 644 ( u=rwX,go=rX) a meno che tu non abbia davvero bisogno degli utenti del gruppo per scrivere.


6
X significa impostare X su directory e file che hanno già il permesso di esecuzione per alcuni utenti (che di solito è quello che vuoi)
tomclegg,

1
@tomclegg: giusto. Ho aggiornato la mia risposta in modo appropriato. Sembra strano che non abbiano mai aggiunto una vera versione specifica della directory, o ancora meglio una lettera pre-operazione (come u, g, o o a) che significhi applicare questa modifica solo alle directory.
Kevin Cathcart,

13

Dalla documentazione di Wordpress :

Se si dispone dell'accesso shell al server, è possibile modificare le autorizzazioni dei file in modo ricorsivo utilizzando i comandi seguenti:

Per le directory:

find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;

Per i file:

find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;

Un eccessivo per questo particolare problema, ma molto utile in altri casi :)
Nurchi

1
Ho notato in ambienti più sensibili alla sicurezza (Magento e sistemi di assistenza sanitaria di recente) che i fornitori e i sistemi open source stanno iniziando a raccomandare SOLO utilizzando il metodo del file poiché ti dà il controllo granulare dell'aquilone sulla condizione sopra e consente anche un controllo accurato di applicazione di setuid, setgid e anche del famigerato "sticky bit". Probabilmente è più lavoro mappare questo per questo caso d'uso, ma la risposta alla scommessa è sempre il metodo più sicuro che raggiunge il risultato desiderato. Credo che la sicurezza dovrebbe sempre essere la caratteristica numero 1 se è possibile permetterselo.
Bryan 'BJ' Hoffpauir Jr.
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.