Come chmod e chown file nascosti in Linux?


33

Come eseguire in modo ricorsivo chmodo chownper file nascosti?

sudo chmod -R 775 * non funziona su file nascosti.

Lo stesso vale per sudo chown -R user:group.

Risposte:


35

Se stai bene anche chmod'ing la directory corrente, fallo e lascia -Rfare il sollevamento pesante. -Rnon ignora i file nascosti.

sudo chmod -R 775 .

14
Questo ( * .*) non è il modo più sicuro per farlo. In particolare, ricorrerebbe alla directory principale, il che significa che chmodè anche fratelli della directory corrente. Il modo corretto sarebbe * ..?* .[^.]*o, ancora meglio (considerando i caratteri jolly potrebbe non corrispondere a nessun file) $(ls -A).
jpalecek,

1
@jpalecek: l'output di non lsè analizzabile; cercare di analizzarlo richiede problemi. L'approccio corretto consiste nell'utilizzare il globbing delle coperture.
Scott Severance,

Anche se in Linux hai la possibilità di cambiare l'ordine di args per chmod, quando esegui script x-plat tra Linux e OS X, questo è l'ordine che dovresti usare, ad esempio, sudo chmod 775 -Randrebbe a pancia in su, quindi atteniti a questa risposta .
kayleeFrye_onDeck,

35

* non include i file nascosti per impostazione predefinita, ma se sei in bash, puoi farlo con:

shopt -s dotglob

Leggi di più a riguardo nel builtinmanuale di bash :

Se impostato, Bash include i nomi di file che iniziano con un `. ' nei risultati dell'espansione del nome file.

Ciò renderà *inclusi anche i file nascosti.

chmod -R 775 *

Disabilita con:

shopt -u dotglob

2
Come farlo zsh?
niente di speciale-qui il

2
Si utilizza il (D)qualificatore chmod -R 775 *(D)
globbing

2

Un'altra opzione è usare findmi piace poiché puoi avere un controllo molto preciso su di esso.

find <path to start from> -exec chown <options> {} \+

find -path '<path to include>' -exec chown <options> {} \+

L'unico aspetto negativo è che findha una sintassi diversa su versioni diverse.


2

Tutti i file nella directory corrente, ricorsivamente, compresi i file nascosti:

chmod 755 -R ./* ./.[!.]*

Tutti i file nella directory corrente, non ricorsivamente, compresi i file nascosti:

chmod 755 ./* ./.[!.]*

Ciò non cambierà un nome file di eccezione che inizia con 2 punti, ad esempio, "./..thisonescapesunharmed.txt"

Inoltre, fai attenzione a non rimuovere il bit "x", altrimenti tutte le tue directory non saranno accessibili (è necessario il bit x per eseguire il cd in una directory).

Ricorda questo avviso: non usare mai nudo *ma ./*invece.

Per evitare problemi durante l'impostazione delle autorizzazioni per le directory, utilizzare findinvece.

find . -type f -exec chmod `VALUE` {} \;
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.