it-swarm.com.de

So ändern Sie den Besitzer für einen Rsync

Ich verstehe, wie man die Berechtigungen für rsync beibehält. In meinem Fall hat mein lokaler Computer jedoch nicht den Benutzer, der die Dateien für den Webserver unterlegen muss. Wenn ich also rsync bin, muss der Besitzer und die Gruppe Apache auf dem Webserver sein, aber mein Benutzername auf meinem lokalen Computer. Irgendwelche Vorschläge?

Ich wollte klarstellen, um genau zu erklären, was ich tun muss.

Mein PC: "home" mit dem Benutzerkonto "michael" Mein Webserver: "server" mit dem Benutzerkonto "remote" und dem Benutzerkonto "Apache".

Derzeitige Situation: Meine Website befindet sich bei dem Eigentümer "Michael" auf "Zuhause" und beim Eigentümer "Apache" auf dem "Server". 'home' muss den Benutzer 'michael' und 'server' muss den Benutzer 'Apache' verwenden

Aufgabe: rsync meiner Website auf 'home' auf 'server', aber alle Eigentümer der Dateien von 'Apache' und der Gruppe 'Apache'

Problem: rsync wird die Berechtigungen, den Besitzer und die Gruppe vorgeben. Ich brauche jedoch alle Dateien, um Eigentümer von Apache zu sein. Ich weiß, dass der Eigentümer des Benutzers den Server nicht auf "Server" setzen wird, aber da dieser Benutzer "Remote" ist, verwendet er dies anstelle von "Apache". Ich kann nicht mit dem Benutzer 'Apache' (was Nizza wäre) rsync, aber aus Sicherheitsgründen bin ich nicht bereit, mich zu öffnen.

Meine einzige Idee, wie man das lösen kann: Nach jedem rsync manuell chown -R und chgrp -R, aber es ist ein riesiges System, und dies dauert lange, vor allem, da es in Produktion geht.

Weiß jemand, wie das geht?

Aktueller Befehl, den ich für rsync verwende: Rsync --progress -rltpDzC --force --delete -e "ssh -p22" ./ [email protected]:/website

16

Es gibt Hacks, die Sie auf dem empfangenden Computer zusammenstellen könnten, um den Besitz richtig zu machen. Führen Sie 'chmod -R Apache/website' aus cron aus, wäre eine effektive, aber ziemlich kludgey-Option. Stattdessen würde ich sicher empfehlen erlaubt rsync-over-ssh-as-Apache.

Sie würden dafür ein eigenes SSH-Schlüsselpaar erstellen: 

ssh-keygen -f ~/.ssh/Apache-rsync

und bringen Sie dann ~/.ssh/Apache-rsync.pub zum Webserver, wo Sie ihn in ~ Apache/.ssh/authorised_keys ablegen und den zulässigen Befehl sorgfältig angeben, etwa so, alles in einem Linie:

command="rsync --server -vlogDtprCz --delete . /website",from="IP.ADDR.OF.SENDER",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa AAABKEYPUBTEXTsVX9NjIK59wJ+fjDgTQtGwhATsfidQbO6u77dbAjTUmWCZjKAQ/fEFWZGSlqcO2yXXXXXXXXXXVd9DSS1tjE6vAQaRdnMXBggtn4M9rnePD2qlR5QOAUUwhyFPhm6U4VFhRoa3wLvoqCVtCV0cuirB6I45On96OPijOwvAuz3KIE3+W9offomzHsljUMXXXXXXXXXXMoYLywMG/GPrZ8supIDYk57waTQWymUyRohoQqFGMzuDNbq+U0JSRlvLFoVUZ5Piz+gKJwwiFwwAW2iNag/c4Mrb/BVDQAyEQ== [email protected]

und dann wäre Ihr rsync-Befehl auf Ihrem "Heimcomputer" so ähnlich

rsync -av --delete -e 'ssh -i ~/.ssh/Apache-rsync [email protected]' ./ /website

Es gibt andere Wege, diese Katze zu häuten, aber dies ist die klarste und beinhaltet die wenigsten Problemumgehungen für mich. Es verhindert, dass eine Shell als Apache verwendet wird, was die größte Sicherheitsbedenken darstellt, Natch. Wenn Sie wirklich gegen das Erlauben von ssh als Apache sind, gibt es andere Möglichkeiten ... aber so habe ich es gemacht.

Verweise hier: http://ramblings.narrabilis.com/se-srsync-with-ssh , http://www.sakana.fr/blog/2008/05/07/securing-automated-rsync -over-ssh/

14
Adam

Wenn Sie Zugriff auf rsync v.3.1.0 oder höher haben, verwenden Sie die Option --chown

rsync -og --chown=Apache:apache [src] [dst]

Weitere Informationen in einer Antwort aus einer ähnlichen Frage hier: ServerFault: Probleme mit dem Rsync-Befehl, Besitzer- und Gruppenberechtigungen ändern sich nicht

40
David Thompson

Mit der letzten Version (mindestens 3.1.1) von rsync können Sie den "Remote-Besitz" angeben:

--usermap=tom:www-data

Ändert die Tom-Inhaberschaft in WWW-Daten (auch bekannt als PHP/Nginx). Wenn Sie einen Mac als Client verwenden, können Sie mit brew ein Upgrade auf die letzte Version durchführen. Laden Sie Archivquellen auf Ihren Server herunter und "machen" sie!

8
Thomas Decaux

rsync-Version 3.1.2

Ich verwende meistens windows in local, also ist dies die Befehlszeile, mit der ich Dateien mit dem Server synchronisiere ( debian ):

[email protected] /cygdrive/c/wamp64/www/projects

$ rsync -rptgoDvhnP --chown=www-data:www-data --exclude=.env --exclude=vendor --exclude=node_modules --exclude=.git --exclude=tests --exclude=.phpintel --exclude=storage ./website/ [email protected]:/var/www/html/website

-n: Führen Sie einen Testlauf ohne vorgenommene Änderungen durch, um den Befehl wirklich auszuführen. Entfernen Sie die Option -n

0
chebaby