
Ich werde rsync zwischen zwei Webservern einrichten. Ich möchte ein Backup der Daten meines primären Servers auf dem sekundären Server haben, falls der primäre Server abstürzt. Meine Frage bezieht sich auf das Einrichten eines Benutzerkontos für rsync-Zwecke auf dem primären Server.
Aus offensichtlichen Gründen möchte ich hier nicht mein „Root“-Benutzerkonto verwenden. Daher möchte ich ein weiteres Konto einrichten, das nur für rsync-Zwecke verwendet wird. Soweit ich weiß, benötigt dieser Benutzer Leseberechtigungen für alle Dateien, die ich übertragen muss (Apache-Konfiguration, Linux-Benutzerdateien, WWW-Daten).
Wie richte ich solche Berechtigungen am besten ein? Soll ich dem Rsync-Benutzer Root-Rechte erteilen oder gibt es eine sicherere Möglichkeit, einen Benutzer für ein solches Backup zu erstellen?
Antwort1
Wenn das Netzwerk, das die beiden Server verbindet, sicher ist (z. B. ein lokales Netzwerk in Ihrem Büro), können Sie rsync im Daemon-Modus verwenden, um sich als Root anzumelden. Auf diese Weise benötigen Sie kein SSH, um die Verbindung herzustellen.
Erstellen Sie auf dem sekundären System eine Datei /etc/rsyncd.conf
mit folgendem Inhalt:
[all]
path = /
read only = no
uid = 0
gid = 0
hosts allow = primary-host
auth users = backupuser
secrets files = /etc/rsyncd.secrets
exclude = /tmp/ /var/tmp/ /var/cache/ /proc/ /sys/ /dev/ /run/ /boot/
Erstellen Sie nun eine Datei /etc/rsyncd.secrets
beispielsweise mit:
backupuser:thisisasecretpassword
Machen Sie die Datei nur für Root lesbar:
# chown root /etc/rsyncd.secrets; chmod 400 /etc/rsyncd.secrets
Nun müssen Sie noch dafür sorgen, dass rsync als Daemon gestartet wird; das hängt von Ihrer Distribution ab, bei Debian bearbeiten /etc/default/rsync
und ändern Sie die RSYNC_ENABLE
Zeile in RSYNC_ENABLE=true
und führen Sie aus /etc/init.d/rsync start
(bei systemd dann führen Sie aus systemctl enable rsync; systemctl start rsync
).
Jetzt können Sie rsync auf dem primären Host ausführen und alles, was Sie replizieren müssen, an den sekundären Host senden, indem Sie beispielsweise Folgendes tun:
# rsync -ai /var/www/ backupuser@secondary-host::all/var/www/
In diesem Fall fragt Rsync Sie nach dem geheimen Passwort.