
Ich rsync
spiegele eine Reihe von Ordnern auf unserem Failover-Server. Einige unserer Dateien, wie z. B. Miniaturansichten oder Volltextindizes, werden jedoch von unseren Anwendungen unter dem Webbenutzer (mit dem Namen „nobody“) generiert und verfügen standardmäßig über eingeschränkte Berechtigungen.
Außerdem mache ich das über SSH, wo der Root-Zugriff deaktiviert ist, und das möchte ich, wenn möglich, auch so beibehalten.
Gibt es eine sinnvolle Möglichkeit, rsync anzuweisen, als sudo ausgeführt zu werden? Oder sollte ich die Dateiberechtigungen ändern?
Antwort1
Sie könnten:
- Erstellen Sie eine neue Gruppe für Daten, die (von rsync) gelesen werden sollen, fügen Sie dieser Gruppe UIDs hinzu und/oder ändern Sie GIDs für Dateien und Verzeichnisse und legen Sie die entsprechenden Berechtigungen fest, damit Sie rsync mit diesem Benutzernamen verwenden können
- Holen Sie sich die genaue Kommandozeile, die auf dem Server ausgeführt wird, wenn Sie rsync-over-ssh verwenden (Tipp: Verwenden Sie -v mehrmals und denken Sie daran, die '-v's aus der Kommandozeile zu entfernen, die Sie erhalten) und verwenden Sie die SSH-Public-Key-Authentifizierung, um diesen speziellen Befehl zu erzwingen (siehe AUTHORIZED_KEYS FILE FORMAT in sshd(8)).
Mit Nr. 2 könnten Sie rsync über ssh für den Root-Benutzer verwenden und wären trotzdem noch sicher (siehe PermitRootLogin no-password in sshd_config(5)), oder noch besser, Sie könnten die beiden kombinieren, um einen nicht privilegierten Benutzer zu erstellen, der nur mit dieser speziellen rsync-Befehlszeile verwendet werden kann.
EDIT: das Senden von Authentifizierungsdaten über SSH an den Root-Benutzer (z. B. SSH als Benutzer, Sudo mit Benutzerkennwort) ist nicht besser als das direkte Senden von SSH an den Root-Benutzer (über einen öffentlichen Schlüssel oder über einGutPasswort), meiner Meinung nach.
Antwort2
Sie können angeben, was als Remote-rsync-Befehl ausgeführt werden soll --rsync-path
, beispielsweise etwa so:
rsync --rsync-path='sudo rsync' --blah --blah /src blah@dest:/dst
Antwort3
Sie können auchrsync-Daemon. Aber Vorsicht: Durch die Art und Weise, wie ich es dort beschrieben habe, kann jeder auf dem Rechner, auf dem der rsync-Daemon läuft, auf den Modulnamen zugreifen.
Ich habe mich noch nicht sehr eingehend damit befasst, aber es ist mir nicht gelungen, auf diese Weise ein sicheres, auf öffentlichen Schlüsseln basierendes (und daher passwortloses) Setup zu erstellen. Aber vielleicht gibt es das.