Mostrar recursivamente todos os arquivos pertencentes a um usuário específico

32

É possível encontrar e exibir todos os arquivos que um usuário específico possui? Fiz várias coisas como usuário errado e preciso fornecer a propriedade correta dos arquivos aos usuários.

Existe uma maneira recursiva e condicional de exibir vários arquivos e diretórios?

Michael Waterfall
fonte

Respostas:

60

Você pode usar esse comando find portátil com algo assim.

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

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

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

O . representa a pasta atual e abaixo, para que você possa usar um caminho específico como base.

find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;
StephenTrapped
fonte
O que eu estava procurando. Mas apenas para observar que as opções após o chown new-user:new-userprovavelmente devem dizernew-user:new-group
Henesnarfel 14/02
2
Estou supondo que os colchetes devem estar entre aspas para lidar adequadamente com caminhos com espaços. Entãofind . -user old-user -exec chown new-user:new-group "{}" \;
Dan Benamy
Caso outra pessoa esteja procurando como encontrar arquivos que não pertencem a um determinado usuário (os arquivos do usuário em um diretório pessoal que não pertencem a esse usuário), você pode adicionar '!' para a -user other-userseção para encontrar o oposto. Por exemplo find . ! -user other-user,.
21416 Jon
Geralmente, o acima é mais útil quando você adiciona -group old-group. Dessa forma, você pode preservar a propriedade do grupo (admin, staff, sillyothergroupname) #
brianlmerritt
ps - chown pode exigir sudo
brianlmerritt
12

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, obviamente, só funciona no linux e na maioria dos UNIces. Para OSX (baseado em BSD), consulte a solução de @StephenTrapped.

Rik
fonte
+1, mas isso não funciona no OSX, chownnão tem essa opção, veja aqui .
terdon
Opa, de fato, eu perdi a tag osx :) Votou @StephenTrapped.
Rik
chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *irá pular arquivos ocultos na pasta comando é executado, no entanto, chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group .funciona para os arquivos ocultos na pasta pai também.
Lashae
3

A -hopção chown altera a permissão dos próprios arquivos de link simbólico e não apenas do destino.

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

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

Tarun
fonte