Frage Kann ich die Eigentümerschaft aller Dateien eines bestimmten Benutzers ändern?


Gibt es eine Möglichkeit, alle Dateien, die einem Benutzer gehören, rekursiv zu finden und sie in Gnu / Linux zu einem anderen Benutzer / einer anderen Gruppe zu ändern?

Ich nehme an, dass es einen magischen Liner geben muss, aber meine Fähigkeiten in der Befehlszeile sind nicht dafür geeignet :)

Vielen Dank!


8
2018-04-09 21:08


Ursprung




Antworten:


Benutze die find Befehl mit dem -user Möglichkeit. So etwas wie:

find / -user john

wird schließlich alle Dateien zeigen, die dem Benutzer "John" gehören.

Wenn Sie ihren Besitz ändern wollen (ich würde den find ohne Ausführung, um sicherzustellen, dass Sie die Liste haben, die Sie wollen), dann etwas wie:

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

werde es tun.


11
2018-04-09 21:13



Ich benutze normalerweise UID und laufe chown harry:harry wenn ich sicherstellen muss, dass die Gruppenmitgliedschaft auch stimmt. Aber das hängt stark von der Anwendung hier ab. - ewwhite
Es würde tatsächlich nicht für mich arbeiten, wenn ich die UID nicht benutze. Die UID kann in / etc / passwd gefunden werden - user222054


Das ist spät, aber heute bin ich über diese Frage gestolpert weil mein rsync hat nicht die --usermap Möglichkeit.

Meine chown (v. chown (GNU coreutils) 8.13) bietet eine eingebaute Recurse (-R) und ein --from Option, damit Ihr (und mein) Problem auch gelöst werden konnte

chown -R --from=john harry /


Genauer gesagt migriere ich einen Server von OpenSuse nach debian, und der Benutzer und die Gruppe von apache2 unterscheiden sich zwischen den Distributionen. In OpenSuse seinen Benutzer wwwrun (id:30) und Gruppe www (id:8), in Debian www-data (id: 33) für beide. Nachdem ich die Dateien mit kopiert habe

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

ich benutzte

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

auf dem Ziel (Debian) Maschine.


Hinweis: rsync version 3.1.0 protocol version 31 hat das oben erwähnte --usermap also wenn ich das hätte, hätte ich alle drei Schritte mit einem Befehl auf dem Quellrechner erledigen können:

rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/

7
2018-05-22 10:27



Ich bevorzuge diesen, besonders für die Möglichkeit, die Gruppe zu wechseln. EIN find -exec Ein Liner ist für mich der letzte Ausweg, kurz bevor die Dinge manuell erledigt werden. (Ich hasse es auch zu schreiben {} \;, aber das ist persönlich) - Tomasz Gandor