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.