rsync-Berechtigung verweigert Sichern eines Remote-Verzeichnisses auf meinem lokalen Computer

Ich erhalte den im Titel erwähnten Fehler.

Ich habe diese ähnliche Frage gefunden: Führen Sie rsync mit Root-Berechtigung auf dem Remote-Computer aus. Das beantwortet meine Frage nicht.

Ich bin der Administrator auf dem Remote-Server und möchte rsync verwenden, um Dateien in meiner lokalen Box zu sichern. Hier ist mein rsync-Befehl:

$ rsync -avz [email protected]:/var/www/ /backups/Sites/MySite/

Es funktioniert meistens. Die Anmeldung erfolgt über ein Tastenfeld. Ich kann und kann kein Passwort verwenden (BEARBEITEN: um mich über SSH anzumelden). Nur ein paar Dateien werden nicht übertragen aufgrund Benutzerberechtigungen. Ich möchte diese Berechtigungen nicht ändern.

Hier ist der Fehler:

receiving file list ... done
rsync: send_files failed to open "/var/www/webapp/securestuff/install.php": Permission denied (13)

Ich mache nicht möchte die Berechtigungen für diese Datei ändern. Es (und andere mögen es) sollte nicht lesbar sein (außer von root).

Dies muss in einem Cron-Job ausgeführt werden, und ich bevorzuge eine einfache einzeilige Lösung, die nur den Befehl rsync verwendet. Die nächste Wahl wäre ein Shell-Skript, das ich über den Cron-Job aufrufen kann. In keinem Fall kann ich mich manuell beim Remote-Computer anmelden und root werden (weil ich schlafen, wenn das läuft.

Wie kann ich rsync verwenden, um es auf meiner lokalen Box zu sichern?

Author: Community, 2012-03-07

3 answers

Sie können eine Datei nicht sichern, die Sie sonst nicht lesen können, daher müssen die Berechtigungen entweder changed oder von root überschrieben werden.

Ihre Optionen im Detail:

  • Überschreiben Sie die Berechtigungen durch rsync ' ing als [email protected] direkt. (

  • ...oder indem Sie sudo auf dem Server so konfigurieren, dass die serverseitige Ausführung von rsync ohne Kennwort möglich ist Komponente.

    me    ALL=(root) NOPASSWD: /usr/bin/rsync --server --sender -vlogDtprze.iLsf . /var/www/
    

    Und

    rsync --rsh="ssh [email protected] sudo" -avz /var/www/ /backups/...
    
  • Erstellen Sie ein dediziertes "Website-Backup" - Konto auf dem Server. Ändern Sie die Berechtigungen der Dateien, um sie für das Konto "website-backup" lesbar zu machen; Sie können dafür ACLs und setfacl verwenden. Verwenden Sie dieses Konto nicht für etwas anderes.

    rsync -avz [email protected]:/var/www/ /backups/sites/mysite/
    
  • Schreibe ein Skript auf den Server, das /var/www/ in einen verschlüsselten Tarball ablegt. Dies kann wiederum als root (über crontab) oder durch Konfigurieren von sudo auf not benötigen Sie ein Passwort für dieses Skript. Beispiel:

    #!/bin/sh
    tar c /var/www/ | gpg -e -r [email protected]
    

    Die Sicherung würde durch Ziehen des gesamten Tarballs jedes Mal erfolgen, was bei großen Sites ineffizient sein könnte:

    ssh [email protected] "sudo /usr/sbin/dump-website" > /backups/sites/mysite.tar.gpg
    

    Die Kennwortanforderung würde durch Bearbeiten von sudoers entfernt:

    me     ALL=(root) NOPASSWD: /usr/sbin/dump-website
    
 8
Author: user1686,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-03-07 21:19:37

Auf dem Remote-Host können Sie den rsync-Daemon mit

- Uid-root -

In der Datei /etc/rsyncd.conf.

Dadurch kann der Daemon die Funktion CAP_DAC_OVERRIDE verwenden und das lokale Dateisystem lesen, ohne die Berechtigungen/Eigentümer zu ändern.

Wenn Sie nur ein Backup erstellen müssen, ist es ratsam, rsync auf den schreibgeschützten Modus zu setzen:

Nur lesen = true

 5
Author: altmas5,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-05-31 22:46:32

Wenn die Dateien nur von root gelesen werden können, benötigen Sie root Zugriff auf die Sicherung der Datei, indem Sie sie aus dem Dateisystem lesen. rsync liest die Dateien aus dem Dateisystem und nicht vom RAW-Gerät.

Mit Ausnahme von dump, dd und ähnliche Backups, die die Partition eher kopieren, dass Dateien, Backups Programme lesen Sie die Dateien aus dem Dateisystem. Backup-Dienstprogramme können keine Dateien lesen und sichern, für die die Berechtigungen der Benutzer-ID, mit der sie ausgeführt werden, den Zugriff verhindern. Dies ist der Fall, auf den Sie stoßen.

In den meisten Fällen müssen Sie Ihrer Backup-Software genug vertrauen, damit sie alle Ihre Daten lesen kann. Dies bedeutet auch, dass Sie Ihrem Sicherungsmedium alle Ihre Daten vertrauen müssen. In einigen Fällen möchten Sie möglicherweise einige Dateien von der Sicherung ausschließen und ihre Inhalte mit einer alternativen Methode sichern.

BEARBEITEN: Wenn Sie die Daten archivieren (alle Berechtigungen kopieren), benötigen Sie Root-Zugriff auf beiden Servern. Wenn Sie dies als Backup tun, können Sie ich möchte mir eine Lösung wie BackupPC ansehen, die rsync zum Lesen der Dateien verwendet, die Dateien jedoch in einem eigenen Verzeichnisbaum speichert.

 0
Author: BillThor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-03-07 21:31:41