Posso alterar a propriedade de todos os arquivos de um usuário específico?

8

Existe uma maneira de localizar recursivamente todos os arquivos pertencentes a um usuário e alterá-los para outro usuário / grupo no Gnu / Linux?

Eu suponho que deve haver um forro mágico, mas minhas habilidades de magia na linha de comando não estão à altura disso:)

Obrigado!

    
por john 09.04.2012 / 23:08

2 respostas

12

Use o comando find com a opção -user . Algo como:

find / -user john

acabará por transformar todos os arquivos pertencentes ao usuário "john".

Se você quiser alterar a propriedade deles (eu executaria o find sem execução para ter certeza de que você tem a lista desejada), algo como:

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

fará isso.

    
por 09.04.2012 / 23:13
7

Hoje é tarde, mas hoje me deparei com essa pergunta porque meu rsync não tem a opção --usermap .

Meu chown (v. chown (GNU coreutils) 8.13) oferece uma opção embutida de recurs ( -R ) e --from para que seu (e meu) problema também possa ter sido resolvido usando

chown -R --from=john harry /

Mais especificamente, estou migrando um servidor do OpenSuse para o debian, e o usuário e o grupo do apache2 diferem entre as distribuições. No OpenSuse seu usuário wwwrun (id:30) e grupo www (id:8) , em debian www-data (id: 33) para ambos. Depois que eu copiei os arquivos usando
rsync -az /path/to/files me@debian:/path/to/

eu usei

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

na máquina alvo (debian).

Nota: rsync version 3.1.0 protocol version 31 tem o--usermap acima mencionado, por isso, se eu pudesse ter feito todos os três passos com um comando na máquina de origem:

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