Chown ricorsivo di tutti i file di proprietà di un utente specifico


32

È possibile trovare e visualizzare tutti i file di proprietà di un utente specifico? Ho fatto un sacco di cose come utente sbagliato e devo dare all'utente la corretta proprietà dei file.

Esiste un modo ricorsivo e condizionale per chown un sacco di file e directory?

Risposte:


60

È possibile utilizzare questo comando find portatile con qualcosa del genere.

find . -user old-user -exec chown new-user:new-group {} \;

Puoi espanderlo per trovare file specifici con opzioni -iname (non POSIX ma disponibili su OSX)

find . -iname '*.html' -user www-data -exec chown www-data:www-data {} \;

Il . sta per la cartella corrente e sotto, quindi puoi usare un percorso specifico come base.

find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;

Quello che stavo cercando. Ma solo per notare che le opzioni dopo l'abito new-user:new-userdovrebbero probabilmente direnew-user:new-group
Henesnarfel,

2
Immagino che le parentesi graffe dovrebbero essere tra virgolette per gestire correttamente i percorsi con spazi. Quindifind . -user old-user -exec chown new-user:new-group "{}" \;
Dan Benamy il

Nel caso in cui qualcun altro stia cercando come trovare file non di proprietà di un determinato utente (i file dell'utente in una home directory che non sono di proprietà di quell'utente), puoi aggiungere '!' alla -user other-usersezione per trovare il contrario. Ad esempio find . ! -user other-user,.
Jon,

Spesso quanto sopra è più utile quando si aggiunge -group old-group. In questo modo puoi preservare la proprietà del gruppo (admin, staff, sillyothergroupname)
brianlmerritt,

ps - chown potrebbe richiedere sudo
brianlmerritt il

12

Puoi usare

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group  *

Dal manuale chown --help:

  --from=CURRENT_OWNER:CURRENT_GROUP
                     change the owner and/or group of each file only if
                     its current owner and/or group match those specified
                     here.  Either may be omitted, in which case a match
                     is not required for the omitted attribute.

edit : Questo, ovviamente, funziona solo su Linux e su molte UNIces. Per OSX (basato su BSD) vedere la soluzione di @StephenTrapped.


+1 ma non funzionerà su OSX, non ha quell'opzione chown, vedi qui .
terdon,

Oops, in effetti, ho perso il tag osx :) Votato @StephenTrapped up.
Rik,

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *salterà i file nascosti nel comando cartella viene eseguito, tuttavia chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group .funziona anche per i file nascosti nella cartella padre.
Lashae,

3

L' -hopzione di chown modifica l'autorizzazione dei file di link simbolici stessi e non solo della destinazione.

Ciò potrebbe essere cruciale quando si esegue questa operazione su cartelle binarie del software, che utilizzano collegamenti Symoblic per passare da una versione all'altra.

find . -user old-user -exec chown -h new-user:new-group {} \;

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.