Czy mogę zmienić własność wszystkich plików określonego użytkownika?

9

Czy istnieje sposób, aby rekurencyjnie znaleźć wszystkie pliki należące do użytkownika i zmienić je na innego użytkownika / grupę w Gnu / Linux?

Zakładam, że musi być jakiś magiczny liniowiec, ale moje umiejętności magiczne w linii poleceń nie są wystarczające :)

Dzięki!

Jan
źródło

Odpowiedzi:

14

Użyj findpolecenia z -useropcją. Coś jak:

find / -user john

ostatecznie wyświetli wszystkie pliki należące do użytkownika „John”.

Jeśli chcesz zmienić ich własność (uruchomiłbym findbez wykonywania, aby upewnić się, że masz listę, którą chcesz), a następnie coś takiego:

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

zrobię to.

cjc
źródło
1
Zwykle używam UID i uruchamiam, chown harry:harryjeśli muszę upewnić się, że członkostwo w grupie też jest prawidłowe. Ale to zależy w dużej mierze od zastosowania tutaj.
ewwhite
Właściwie to nie zadziałałoby, chyba że użyłem UID.
Identyfikator
7

Jest późno, ale dzisiaj natknąłem się na to pytanie, ponieważ rsyncnie mam --usermapopcji.

Mój chown(w. Chown (GNU coreutils) 8.13) oferuje wbudowaną funkcję recurse ( -R) i --fromopcję, dzięki której Twój (i mój) problem można również rozwiązać za pomocą

chown -R --from=john harry /


Mówiąc dokładniej, migruję serwer z OpenSuse do Debiana, a użytkownik i grupa apache2 różnią się między dystrybucjami. W OpenSuse jego użytkownik wwwrun (id:30)i grupa www (id:8), w www-data (id: 33)obu przypadkach debian . Po skopiowaniu plików za pomocą

rsync -az /path/to/files me@debian:/path/to/

użyłem

chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/

na maszynie docelowej (debian).


Uwaga: rsync version 3.1.0 protocol version 31ma wyżej wymienione, --usermapwięc gdybym miał, mógłbym wykonać wszystkie trzy kroki za pomocą jednego polecenia na maszynie źródłowej:

rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/
Aet3miirah
źródło
Wolę ten, szczególnie w przypadku opcji zmiany grupy. find -execJedna wkładka jest dla mnie ostatecznością, tuż przed robi rzeczy ręcznie. (Poza tym nie lubię pisać {} \;, ale to
sprawa