it-swarm-eu.dev

Come posso modificare le autorizzazioni per una cartella e tutte le relative sottocartelle e file in un solo passaggio in Linux?

Vorrei cambiare i permessi di una cartella e di tutte le sue sottocartelle e file in un unico passaggio (comando) in Linux.

Ho già provato il comando qui sotto, ma funziona solo per la cartella menzionata:

chmod 775 /opt/lampp/htdocs

C'è un modo per impostare chmod 755 per /opt/lampp/htdocs e tutti i relativi contenuti, comprese sottocartelle e file?

Inoltre, in futuro, se creo una nuova cartella o un nuovo file all'interno di htdocs, in che modo i permessi di esso possono essere automaticamente impostati su 755?

Ho dato un'occhiata anche a questo link:

http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal

1546
Adam

Le altre risposte sono corrette, in quanto chmod -R 755 imposterà queste autorizzazioni a tutti i file e sottocartelle nella struttura. Ma perché mai vorresti ? Potrebbe avere senso per le directory, ma perché impostare il bit di esecuzione su tutti i file?

Sospetto che ciò che si vuole veramente fare sia impostare le directory su 755 e lasciare i file da soli o impostarli su 644. A tale scopo, è possibile utilizzare il comando find. Per esempio:

Per cambiare tutte le directory in 755 (drwxr-xr-x):

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

Per cambiare tutti i file in 644 (-rw-r--r--):

find /opt/lampp/htdocs -type f -exec chmod 644 {} \;
2608
WombleGoneBad

Controlla l'opzione -R

chmod -R <permissionsettings> <dirname>

In futuro, puoi risparmiare un sacco di tempo controllando prima la pagina man:

man <command name>

Quindi in questo caso:

man chmod
709
Steve Robillard

Se si desidera impostare le autorizzazioni su tutti i file su a+r e tutte le directory su a+x e farlo ricorsivamente attraverso la struttura completa della sottodirectory, utilizzare:

chmod -R a+rX *

X (ovvero X, non x!) Maiuscola viene ignorata per i file (a meno che non siano già eseguibili per qualcuno) ma viene utilizzata per le directory.

340
Pete

È possibile utilizzare -R con chmod per l'attraversamento ricorsivo di tutti i file e sottocartelle.

Potrebbe essere necessario Sudo in quanto dipende da LAMP in fase di installazione da parte dell'utente corrente o di un altro:

Sudo chmod 755 -R /opt/lampp/htdocs
122
ravi ranjan

Per impostare su tutte le sottocartelle (in modo ricorsivo) utilizzare -R

chmod 755 /folder -R

E usa umask per impostare il valore predefinito su nuove cartelle/file cd/cartella umask 755

71
Topera

Il comando ricorsivo corretto è:

Sudo chmod 755 -R /opt/lampp/htdocs

-R: cambia ogni sotto cartella inclusa la cartella corrente

60
Pramendra Gupta

chmod 755 -R /opt/lampp/htdocs imposterà ricorsivamente le autorizzazioni. Non è possibile impostare automaticamente le autorizzazioni per i file solo in questa directory creata dopo aver impostato le autorizzazioni, ma è possibile modificare le autorizzazioni dei file predefiniti a livello di sistema impostando umask 022.

49
sleepynate

Potresti considerare questa risposta data da nik su superuser e usare "one chmod" per tutti i file/cartelle come questo:

chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
23
Iam Zesh

Uso:

Sudo chmod 755 -R /whatever/your/directory/is

Tuttavia, fai attenzione. Può davvero farti male se modifichi i permessi dei file/cartelle sbagliati.

20
Nate Starner

Ecco un altro modo per impostare le directory su 775 e i file su 664.

find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)

Può sembrare lungo, ma è bello per tre motivi:

  1. Esegue la scansione attraverso il file system solo una volta anziché due.
  2. Fornisce un controllo migliore su come vengono gestiti file rispetto a come vengono gestiti directory. Ciò è utile quando si lavora con modalità speciali come sticky bit , che probabilmente si desidera applicare alle directory ma non ai file.
  3. Usa una tecnica direttamente dalle pagine man (vedi sotto).

Si noti che non ho confermato la differenza di prestazioni (se esiste) tra questa soluzione e quella di utilizzare semplicemente due comandi di ricerca (come nella soluzione di Peter Mortensen). Tuttavia, vedere un esempio simile nel manuale è incoraggiante.

Esempio dalla pagina man find:

find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and  direc‐
tories into /root/suid.txt and large files into /root/big.txt.

Saluti

19
chrisfargen

chmod -R 755 directory_name funziona, ma come manteresti anche i nuovi file su 755? Le autorizzazioni del file diventano l'autorizzazione predefinita.

11
Sanchit Gupta

Volete assicurarvi che i file e le directory appropriati siano chmod-ed/i permessi per quelli appropriati. Per tutte le directory che vuoi

find /opt/lampp/htdocs -type d -exec chmod 711 {} \;

E per tutte le immagini, JavaScript, CSS, HTML ... beh, non dovresti eseguirle. Quindi usa

chmod 644 img/* js/* html/*

Ma per tutto il codice logico (ad esempio PHP code), devi impostare permessi tali che l'utente non possa vedere quel codice:

chmod 600 file
10
NikolaiDante

Per Mac OS X 10.7 (Lion), è:

chmod -R 755 /directory

E sì, come tutti gli altri dicono, fai attenzione quando lo fai.

7
wmartin

Penso che Adam stesse chiedendo come modificare il valore di umask per tutti i processi che si legavano alla directory /opt/lampp/htdocs.

La maschera della modalità di creazione file utente (umask) viene utilizzata per determinare l'autorizzazione del file per i file appena creati. Può essere usato per controllare il permesso di file predefinito per i nuovi file.

quindi se userai una sorta di programma ftp per caricare file in /opt/lampp/htdocs devi configurare il tuo server ftp per usare umask che vuoi.

Se file/directory vengono creati ad esempio da php, è necessario modificare il codice php

<?php
umask(0022);
// other code
?>

se creerai nuovi file/cartelle dalla tua sessione bash, puoi impostare il valore umask nel tuo profilo Shell ~/.bashrc oppure puoi impostare umask in /etc/bashrc o /etc/profile file per tutti gli utenti. aggiungi il seguente file: umask 022

Sample umask Values and File Creation Permissions
If umask value set to   User permission     Group permission     Others permission
000                         all              all                   all
007                         all              all                   none
027                         all          read / execute            none

E per cambiare i permessi per i file già creati puoi usare find. Spero che questo ti aiuti.

6
Viktor

Ci sono due risposte per trovare i file e applicare chmod a loro. Il primo è find il file e applica chmod come trova (come suggerito da @WombleGoneBad).

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

La seconda soluzione è generare un elenco di tutti i file con il comando find e fornire questo elenco al comando chmod (come suggerito da @lamgesh).

chmod 755 $(find /path/to/base/dir -type d)

Entrambe queste versioni funzionano correttamente purché il numero di file restituiti dal comando find sia piccolo. La seconda soluzione è di grande impatto visivo e più leggibile rispetto alla prima. Se il numero di file è elevato, la seconda soluzione restituisce l'errore: Argument list too long.

Quindi il mio suggerimento è

  1. Utilizzare chmod -R 755 /opt/lampp/htdocs se si desidera modificare le autorizzazioni di tutti i file e directory contemporaneamente.
  2. Usa find /opt/lampp/htdocs -type d -exec chmod 755 {} \; se il numero di file che stai usando è molto grande. L'opzione -type x cerca solo tipi di file specifici, dove d viene utilizzato per trovare la directory, f per file e l per link.
  3. Usa chmod 755 $(find /path/to/base/dir -type d) altrimenti
  4. Meglio usare il primo in ogni situazione
4
Prabhu

È molto semplice.

In Terminale vai a file manager. esempio: Sudo nemo. Vai /opt/ quindi fai clic su Proprietà → Autorizzazione . e quindi Altro . Infine, cambia per creare ed eliminare e file acess per leggere e scrivere e fare clic sul pulsante applica ... E funziona.

2
Debian.