2016-05-03 19 views
1

auszuführen Ich möchte erlauben, dass php rsync unter den Privilegien eines anderen Benutzers durchführt, sagen wir WWWsync-Benutzer.Erlaube www-data, rsync unter anderem Benutzer (php)

Wie kann ich dies mit Sudo-Konfiguration erreichen? Hier ist, was ich getan habe:

In sudo configutaion (sudo visudo)

www-data www-data-sync=(wwwsync) NOPASSWD: /usr/bin/rsync 

Diese Linie arbeitet als excpected, wenn sie als wwwsync Benutzer angemeldet

rsync -avz -e "ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress ~/some/path/ [remoteuser]@[remotehost]:~/some/path/ 

Aber diese Zeile ausgeführt von PHP mit shell_exec() funktioniert nicht

sudo -u wwwsync rsync -avz -e "ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress ~/some/path/ [remoteuser]@[remotehost]:~/some/path/ 

Ist es die richtige Art, rsync unter wwwsync-Benutzer auszuführen? Ist die Sudo-Konfiguration richtig eingestellt?

Antwort

1

Ich habe endlich herausgefunden, wie es funktioniert.

sudoer Konfiguration war falsch. Alias ​​muss ALL sein, kein zufälliger Alias.Also, "rsync" muss die Option "-H" haben, damit der Befehl den Ziel-Home-Ordner als Home-Ordner festlegt, während der Befehl ausgeführt wird.

In sudo-Konfiguration (sudo visudo)

www-data ALL=(wwwsync) NOPASSWD: /usr/bin/rsync 

Diese Linie von PHP ausgeführt unter Verwendung von shell_exec() funktioniert (mit SSH-Schlüssel richtig eingestellt für Benutzer wwwsync und Remote-Host)

sudo -H -u wwwsync rsync -avz -e "ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /some/path/ [remoteuser]@[remotehost]:~/some/path/ 

Hinweis: wwwsync rigths/perms müssen sorgfältig festgelegt werden, damit www-data unerwünschte Ordner nicht mit dem Remote-Host synchronisiert.

Dies ermöglicht es mir endlich sicher ressource Synchronisation zwischen einem Master-Server und Slave-Server auszuführen: Safe way to synchronize ressources between servers through php/linux

Wenn das helfen könnte ...