Recursivamente chown todos os arquivos que são de propriedade de um usuário específico

28

É possível encontrar e chown todos os arquivos que um usuário específico possui? Eu fiz um monte de coisas como o usuário errado e preciso dar a propriedade correta do usuário dos arquivos.

Existe uma maneira recursiva e condicional que eu possa fazer um monte de arquivos e diretórios?

    
por Michael Waterfall 20.09.2013 / 20:16

3 respostas

51

Você pode usar este comando de localização portátil com algo parecido com isto.

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

Você pode expandir isso para encontrar arquivos específicos com opções -iname (não POSIX, mas disponíveis no OSX)

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

representa a pasta atual e abaixo, então você pode usar um caminho específico como base.

find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;
    
por 20.09.2013 / 20:25
10

Você pode usar

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

Do manual 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 : Isso, é claro, funciona apenas no linux e na maioria das UNIces. Para o OSX (que é baseado no BSD), veja a solução do @StephenTrapped.

    
por 20.09.2013 / 20:23
3

A opção -h do chown altera a permissão dos próprios arquivos de links simbólicos e não apenas do destino.

O que pode ser crucial ao fazer isso em pastas binárias de software, que usam links symoblic para alternar entre versões.

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

    
por 23.04.2015 / 20:54