Rekurencyjnie wyświetl wszystkie pliki, które są własnością określonego użytkownika

32

Czy można znaleźć i przejrzeć wszystkie pliki, które posiada dany użytkownik? Zrobiłem wiele rzeczy jako niewłaściwy użytkownik i muszę przekazać poprawne prawo własności do plików.

Czy istnieje rekurencyjny i warunkowy sposób, w jaki mogę przeglądać kilka plików i katalogów?

Michael Waterfall
źródło

Odpowiedzi:

60

Możesz użyć tego przenośnego polecenia find z czymś takim.

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

Możesz to rozwinąć, aby znaleźć określone pliki z opcjami -iname (nie POSIX, ale dostępne w OSX)

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

The. oznacza bieżący folder i poniżej, więc możesz użyć określonej ścieżki jako podstawy.

find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;
StephenTrapped
źródło
Czego szukałem. Należy jednak pamiętać, że opcje po new-user:new-usernew-user:new-group
przeróbce
2
Zgaduję, że nawiasy klamrowe powinny być w cudzysłowach, aby poprawnie obsługiwać ścieżki ze spacjami. Tak więcfind . -user old-user -exec chown new-user:new-group "{}" \;
Dan Benamy
Jeśli ktoś szuka sposobu, aby znaleźć pliki, które nie są własnością określonego użytkownika (pliki użytkownika w katalogu domowym, które nie są własnością tego użytkownika), możesz dodać „!” do -user other-usersekcji, aby znaleźć przeciwieństwo. Na przykład find . ! -user other-user.
Jon
Często powyższe jest bardziej przydatne podczas dodawania -group old-group. W ten sposób możesz zachować własność grupy (administrator, personel, sillyothergroupname)
brianlmerritt
ps - chown może wymagać sudo
brianlmerritt
12

Możesz użyć

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

Z instrukcji 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.

edycja : To oczywiście działa tylko w systemie Linux i większości UNIces. W przypadku OSX (opartego na BSD) zobacz rozwiązanie @StephenTrapped.

Rik
źródło
+1, ale to nie zadziała w OSX, chownnie ma tej opcji, zobacz tutaj .
terdon
Ups, rzeczywiście brakowało mi tagu osx :) Zagłosowano @StephenTrapped up.
Rik
chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *pominie ukryte pliki w poleceniu folder jest uruchomiony, jednak chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group .działa również w przypadku ukrytych plików w folderze nadrzędnym.
Lashae
3

-hOpcja chown zmienia pozwolenie symbolicznych samych plików łącza i nie tylko cel.

Może to mieć kluczowe znaczenie w przypadku folderów binarnych z oprogramowaniem, które używają dowiązań symbolicznych do przełączania między wersjami.

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

Tarun
źródło