Come cambierei tutti i file in 644 e tutte le cartelle in 755 usando chmod
dal linux
prompt dei comandi? (Terminale)
http://superuser.com
:: P ma questa domanda mi ha aiutato qui, grazie.
chmod -R u+rwX,go+rX,go-w /foo
Come cambierei tutti i file in 644 e tutte le cartelle in 755 usando chmod
dal linux
prompt dei comandi? (Terminale)
http://superuser.com
:: P ma questa domanda mi ha aiutato qui, grazie.
chmod -R u+rwX,go+rX,go-w /foo
Risposte:
Un approccio potrebbe essere utilizzando find:
find /desired_location -type d -print0 | xargs -0 chmod 0755
find /desired_location -type f -print0 | xargs -0 chmod 0644
sudo find /your/location -type f -exec chmod 644 {} \;
per i file e sudo find /your/location -type d -exec chmod 755 {} \;
per le directory
chmod -R a=r,u+w,a+X /foo
?
unable to execute /bin/chmod: Argument list too long
Il modo più semplice è fare:
chmod -R u+rwX,go+rX,go-w /path/to/dir
che in pratica significa:
per ch
ange file di mod
es -R
ecursively dando:
u
ser: r
permessi ead, w
rite ed e X
ecute,g
roup e o
altri utenti: r
permessi ead ed X
eute, ma non -w
permessi di rito.Si noti che X
renderà eseguibile una directory, ma non un file, a meno che non sia già ricercabile / eseguibile.
+X
- rendere una directory o un file ricercabile / eseguibile da tutti se è già ricercabile / eseguibile da chiunque.
Si prega di controllare man chmod
per maggiori dettagli.
Vedi anche: Come modificare tutte le directory tranne i file (ricorsivamente)? a SU
Il più breve che ho potuto inventare è:
chmod -R a=r,u+w,a+X /foo
che funziona su GNU / Linux e credo in Posix in generale (dalla mia lettura di: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html ).
Quello che fa è:
È importante sottolineare che l'autorizzazione del passaggio 1 cancella tutti i bit di esecuzione, quindi il passaggio 3 aggiunge solo i bit di esecuzione indietro per le directory (mai i file). Inoltre, tutti e tre i passaggi avvengono prima di ricorrere in una directory (quindi questo non equivale ad es
chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo
poiché a = r rimuove x dalle directory, quindi chmod non può ricorrere in esse.)
Il più facile da ricordare per me sono due operazioni:
chmod -R 644 dirName
chmod -R +X dirName
La + X ha effetto solo sulle directory.
Su https://help.directadmin.com/item.php?id=589 scrivono:
Se hai bisogno di un modo rapido per ripristinare i tuoi dati public_html su 755 per le directory e 644 per i file, puoi usare qualcosa del genere:
cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
Ho provato e ... funziona!
Questo ha funzionato per me:
find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;
find /A -type X -exec chmod Y '{}' \;
Esegui entrambi in un unico passaggio con:
find -type f ... -o -type d ...
Come in, trova il tipo f OPPURE digita d, ed esegui il primo ... per i file e il secondo ... per i dir. In particolare:
find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +
Lascia perdere --changes
se vuoi che funzioni in silenzio.
Se hai bisogno di un modo rapido per ripristinare i tuoi dati public_html su 755 per le directory e 644 per i file, puoi usare qualcosa del genere:
cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
inoltre, se sai che PHP viene eseguito come utente e non come "apache", puoi impostare i file PHP su 600, per un ulteriore livello di sicurezza, ad esempio:
find . -type f -name '*.php' -exec chmod 600 {} \;
Puoi trovare questa risorsa qui: https://help.directadmin.com/item.php?id=589
Anche questo può funzionare:
chmod -R 755 * // All files and folders to 755.
chmod -R 644 *.* // All files will be 644.