2013-06-13 9 views
11

Devo modificare le autorizzazioni della directory htdocs in apache in un determinato gruppo e con determinati read/write/execute.Linux: imposta il permesso solo alle directory

Le directory devono avere permessi 775 ei file devono avere 664.

Se faccio un ricorsiva 664 al htdocs, quindi tutti i file e le directory cambieranno a 664.

I don' t voglio cambiare le directory manualmente.

C'è un modo per modificare solo file o directory?

risposta

17

Usa trovare. Utilizzare l'opzione -o per specificare azioni alternative per diversi tipi, quindi è sufficiente eseguire find una volta, anziché separatamente per ciascun tipo.

find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} + 
+2

Meglio usa il comando 'chmod's nel supporto. Vedi [Gordon Davisson's] (http://stackoverflow.com/a/17091413/538512) risposta sotto –

3

Usa find per la ricerca di directory e applicare chmod su di loro:

find -type d | xargs chmod 775 

Usa tipo f per il file: -type opzione per limitare le azioni a file e directory di

find -type f | xargs chmod 775 
0

prova:

find htdocs -type d -exec chmod 775 {} + 
+0

Imposta le autorizzazioni della directory, ma non i permessi del file. – Barmar

31

chmod può effettivamente fare questo stesso; il permesso simbolico X significa "esegui, se ha senso" che generalmente significa su directory ma non su file. Quindi, è possibile utilizzare:

chmod -R u=rwX,go=rX /path/to/htdocs 

L'unico potenziale problema è che se uno qualsiasi dei file di pianura hanno già eseguito insieme, chmod assume è intenzionale e la mantiene.

+2

La migliore risposta di gran lunga, se hai abbastanza directory ricorsive, 'xargs' fallirà alla fine. controlla le [pagine man] (http://ss64.com/bash/chmod.html) per ulteriori informazioni –

+3

questo merita il segno di spunta 'risposta' – Pankrates

+0

@Panche - esattamente –

1

risposta di Gordon sopra è corretto, ma se si sta cercando di bloccare l'accesso a un albero di directory, lascia script che sono eseguibili al proprietario anche eseguibile a chi è stato concesso il X. capitale

Utilizzando

find -type d exec chmod 775 {} + 

o

find -type d exec chmod 755 {} + 

è più sicuro.

0

io uso qualcosa di simile alla soluzione fornita da Gordon:

chmod -R ug=rw,o=r,a+X /path/to/folder/ 

Dovrebbe impostare sempre 775 per le cartelle e 664 per i file, anche se il permesso di esecuzione è stato previosly fissato per qualche file

Problemi correlati