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

9

Existe uma maneira de encontrar 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 algum liner mágico, mas minhas habilidades de assistente de linha de comando não estão de acordo com isso :)

Obrigado!

John
fonte

Respostas:

14

Use o findcomando com a -useropção Algo como:

find / -user john

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

Se você quiser alterar a propriedade deles (eu executaria o findsem execução para garantir que você tenha a lista desejada), algo como:

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

vai fazer isso.

cjc
fonte
1
Normalmente, eu uso o UID e corro chown harry:harryse preciso garantir que a associação ao grupo também esteja correta. Mas isso depende muito da aplicação aqui.
ewwhite
Na verdade, não funcionaria para mim, a menos que eu usasse o UID. O UID pode ser encontrado em / etc / passwd #
user222054
7

É tarde, mas hoje me deparei com essa pergunta porque a minha rsyncnão tem a --usermapopção.

Meu chown(v. Chown (GNU coreutils) 8.13) oferece um recurse interno ( -R) e uma --fromopção 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), no debian www-data (id: 33)para ambos. Depois de copiar 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 de destino (debian).


Nota: rsync version 3.1.0 protocol version 31tem o mencionado acima, por --usermapisso, se eu tivesse, poderia ter executado todas as três etapas com um comando na máquina de origem:

rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/
Aet3miirah
fonte
Eu prefiro este, especialmente pela opção de mudar de grupo também. Uma find -execlinha única para mim é o último recurso, antes de fazer as coisas manualmente. (Além disso, eu odeio escrever {} \;, mas isso é pessoal)
Tomasz Gandor