Rsync User, Berechtigungen - Transfer auf Ziel funktioniert nicht

  • Nochmal zusammen gefasst:

    - Es gibt einen oder mehrere Server von denen du sichern möchtest. Nennen wir sie quelle.

    - Es gibt einen Server auf dem die Daten gesichert werden sollen. Diesen nennen wir mal ziel.

    - Du möchtest auf ziel unter dem Benutzer rsyncuser rsync mit root Rechten ausführen.

    - Der rsyncuser darf auf ziel über ssh aber nur rsync aufrufen.


    Wer ruft auf dem quellen-Server den rsync Befehl auf?

    Ist das root oder ist dass der andereruser?

    Oder sind es sogar verschiedene andere User? -> Du möchtest ja, dass ausschließlich rsync aufgerufen werden kann.


    Auf dem quellen-Server ein mit root Rechten

    rsync -a /path/to/quelle ziel:/path/to/backup

    wäre wahrscheinlich nicht so toll, da sich wohl auch andere User auf dem quellen-Server root Rechte geben könnten!? Und somit auch auf dem ziel-Server gelangen können.


    So neben bei. Auch wenn auf dem ziel-Server rsync unter dem rsyncuser mit root Rechten ausgeführt wird. Würde man mit

    rsync -a ziel:/ /path/to/sicherung-ziel-server

    sich alle Daten von ziel kopieren können.

    Oder aber auch alles löschen können:

    rsync -a --delete /leeres-verzeichnis ziel:/


    Auf dem ziel-Server könntest du natürlich auch die Daten von quelle abholen. Somit könnte von quelle auch niemand auf ziel zugreifen. Da sie ja den Private-Key nicht haben.

    Wenn du den Public-Key in quelle:/root/.shh/authorized_keys legst.

    Und anschließend auf ziel unter dem root Account:

    rsync -a quelle:/path/to/quelle /path/to/backup

    ausführst.


    Wäre das eventuell ein gangbarer Weg?

    sudo in Verbindung mit rsync hat bei mir auch nur Fehler produziert.


    Damit mein z.B. rsync -a quelle:/path/to/quelle /path/to/backup auch so funktioniert wie ich es geschrieben habe, steht in meiner

    Code: ziel:/root/.ssh/config
    Host quelle
      Hostname 12.12.12.12
      Port 1234

    bzw bei quelle unter dem Account, der es ausführt steht in

    Code: ~/.ssh/config
    Host ziel
      Hostname 123.123.123.123
      Port 1234
      User rsyncuser
  • Die Suche führte mich nun zum Blog von Der Bode.

    rrsync ist also die Lösung.


    Schnell mal ein rr+<TAB> im Terminal eingegeben und siehe da, es kennt rrsync. Hat bei mir rsync wohl gleich mal mit installiert 8|


    Nun ein Entrag in authorized_keys auf ziel:

    Code: ziel:/home/rsyncuser/.ssh/authorized_keys
    command="/usr/bin/rrsync ~/path/to/backup",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-ed25519 AAAAC3.....

    Hat jetzt auch den Vorteil, dass man mit weiteren Zeilen auch weitere Ziele angeben kann. Jedoch benötigt jedes Ziel seinen eigenen SSH Key (Richtiger jeder command.).

    Und rsync ist im jeweiligen Verzeichnis gefangen.


    Den Block Match user rsyncuser in /etc/ssh/sshd_config hast ja auch schon wieder auskommentiert.


    Und schon klappt bei mir ein:

    rsync -a /path/to/quelle ziel:/sicherung1


    sicherung1 wird in ~/path/to/backup angelegt.


    In der ~/.ssh/config steht wieder:

    Code: ~/.ssh/config
    Host ziel
      Hostname 123.123.123.123
      Port 1234
      User rsyncuser


    Jetzt fehlt nur noch rsync mit root Rechten auf ziel aufzurufen. Mit sudo hab ich es nicht hinbekommen. Als work-a-round hab ich mal die Berechtiugnen von rsync verbogen:

    Code
    chmod u+s,o-rx /usr/bin/rsync
    chgrp rsyncuser /usr/bin/rsync

    Hoffen wir, dass ein Backup sie nicht wieder grade zieht. Und falls doch, dass dann auch SUID Bit auch wieder entzogen wird.


    Möchte man jetzt noch ein

    sudo rsync -a /path/to/quelle ziel:/sicherung1

    auf quelle ausführen.


    Benötigt man unter /root/.ssh ebenfalls die config und den privaten SSH Key ohne Passwort oder man benutzt bei rsync wieder den Parameter -e 'ssh -i /home/rsyncuser/id_......'