Se eu entendi corretamente, você deseja alterar o proprietário de todos os arquivos dentro de algum diretório (ou da raiz) de propriedade do usuário # 500 para pertencer a outro usuário, sem modificar os arquivos de propriedade de qualquer outro usuário. Você está nessa situação porque copiou uma árvore de diretórios inteira de outra máquina, em que os arquivos dessa árvore eram de propriedade de muitos usuários diferentes, mas você só está interessado em atualizar os que eram de propriedade de "seu" usuário na momento, e não qualquer um dos arquivos que são de propriedade do usuário # 501 ou qualquer outro.
O GNU chown
suporta uma opção --from=500
que você pode usar em combinação com o -R
opção recursiva para fazer isso:
chown -R --from=500 yourusername /path/here
Esta será a opção mais rápida se você tiver o GNU chown
, que no CentOS você deve.
Em alternativa, pode utilizar find
em qualquer sistema:
find /path/here -user 500 -exec chown yourusername '{}' '+'
find
examinará todos os arquivos e diretórios de forma recursiva dentro de /path/here
, correspondendo a todos os que pertencem ao usuário # 500. Com todos esses arquivos, ele executará chown yourusername file1 file2...
quantas vezes forem necessárias. Após o término do comando, todos os arquivos pertencentes ao usuário # 500 serão de propriedade de yourusername
. Você precisará executar esse comando como root
para poder alterar os proprietários do arquivo.
Você pode verificar se há algum stragglers executando o mesmo comando find
sem um comando para executar:
find /path/here -user 500
Não deve listar arquivos neste momento.
Uma ressalva importante: se algum dos arquivos pertencentes ao usuário # 500 for symlinks, chown
por padrão alterará o proprietário do arquivo para o qual o link simbólico aponta, não o próprio link. Se você não confiar nos arquivos que está examinando, isso é uma falha de segurança. Use chown -h
nesse caso.