Posso modificare la proprietà di tutti i file di un utente specifico?


9

C'è un modo per trovare ricorsivamente tutti i file di proprietà di un utente e cambiarli in un altro utente / gruppo in Gnu / Linux?

Presumo che ci debba essere un po 'di magia, ma le mie abilità di magia da riga di comando non sono all'altezza :)

Grazie!

Risposte:


14

Utilizzare il findcomando con l' -useropzione Qualcosa di simile a:

find / -user john

alla fine verranno visualizzati tutti i file di proprietà dell'utente "john".

Se vuoi cambiare la loro proprietà (eseguirò findsenza esecuzione per assicurarmi di avere l'elenco che desideri), quindi qualcosa del tipo:

find / -user john -exec chown harry {} \;

lo farà.


1
Di solito uso l'UID ed eseguo chown harry:harryse devo assicurarmi che anche l'appartenenza al gruppo sia corretta. Ma ciò dipende fortemente dall'applicazione qui.
ewwhite,

In realtà non funzionerebbe per me se non avessi usato l'UID. L'UID può essere trovato in / etc / passwd
user222054

7

È tardi, ma oggi mi sono imbattuto in questa domanda perché la mia rsyncnon ha l' --usermapopzione.

My chown(v. Chown (GNU coreutils) 8.13) offre un recurse incorporato ( -R) e --fromun'opzione in modo che il tuo (e il mio) problema possano essere risolti anche usando

chown -R --from=john harry /


Più specificamente sto migrando un server da OpenSuse a debian e l'utente e il gruppo di apache2 differiscono tra le distribuzioni. In OpenSuse il suo utente wwwrun (id:30)e gruppo www (id:8), in debian www-data (id: 33)per entrambi. Dopo aver copiato i file usando

rsync -az /path/to/files me@debian:/path/to/

ero solito

chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/

sulla macchina target (debian).


Nota: rsync version 3.1.0 protocol version 31ha citato quanto sopra, --usermapquindi se avessi potuto fare tutti e tre i passaggi con un comando sul computer di origine:

rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/

Preferisco questo, specialmente per l'opzione di cambiare gruppo. A find -execuno di linea per me è l'ultima risorsa, poco prima di fare le cose manualmente. (Inoltre, odio scrivere {} \;, ma questo è personale)
Tomasz Gandor,
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.