Hallo ubuntuusers,
mittels rsync habe ich ein Backup auf ein Unterverzeichnis meines Datenspeichers bei ssh.strato.de erstellt. Für dieses Unterverzeichnis besteht bei Strato neben dem sftp-Hauptnutzer ein sftp-Zweitnutzer.
Wie kann ich einen Zugriff für eine andere Person (Zweitnutzer) zur Durchführung einer Rückübertragung der Daten auf das Unterverzeichnis eingrenzen?
Der Backup-Befehl lautet für den Hauptnutzer:
rsync -avz --delete LokalerOrdner/ Hauptnutzer.de@ssh.strato.de:Unterverzeichnis
Der Restore-Befehl lautet für den Hauptnutzer:
rsync -avz --delete Hauptnutzer.de@ssh.strato.de:Unterverzeichnis/ LokalerOrdner
Bis hierher funktioniert die Sache tadellos!
Da ich aber nicht möchte, dass der Zweitnutzer auf sämtliche Daten meines Speicherplatzes bei Strato Zugriff erhält, möchte ich dies begrenzen.
Als Restore-Befehl für den Zweitnutzer hatte ich gedacht:
rsync -avz --delete Zweitnutzer@Hauptnutzer.de@ssh.strato.de:/ LokalerOrdner
Als Rückmeldung erhalte ich dann allerdings:
Zweitnutzer@Hauptnutzer.de@ssh.strato.de's password: "Passwort_des_Zweitnutzers" exec request failed on channel 0 rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] rsync error: unexplained error (code 255) at io.c(235) [Receiver=3.1.3]
Als Zweitnutzer kann ich mich aber problemlos über sftp direkt auf das Unterverzeichnis mit folgendem Befehl verbinden:
sftp Zweitnutzer@Hauptnutzer.de@ssh.strato.de
Weshalb funktioniert diese direkte Verbindung per rsync auf das Unterverzeichnis nicht?
Alle möglichen Kombinationen, mit
rsync .... sftp://Zweitnutzer@Hauptnutzer.de@ssh.strato.de
und ähnliche sind bisher gescheitert.
Vielleicht kann mir da jemand weiterhelfen.
MfG L-H
Update: Ich habe jetzt nach einigen Versuchen eine recht elegante Variante für die Lösung meines Problems gefunden.
Man kann mit FUSE/sshfs das Verzeichnis des Unternutzers direkt auf den lokalen Rechner mounten.
In meinem o.a. Beispiel geht das so.
Zuerst legt man im eigenen /home ein Verzeichnis an, zu dem man die Dateistruktur des SFTP-Nutzers mounten kann. Hier: /fusessh
Dann mountet man dort hin mit:
sshfs Zweitnutzer@Hauptnutzer.de@ssh.strato.de:/ ~/fusessh
Danach kann man den rsync-Befehl wie bei einem lokalen Backup oder einer lokalen Sicherung innerhalb des Systems ausführen. In meinem Beispiel geht das dann so:
rsync -avz --delete fusessh/ Restoreordner
Ob die Option -a auch auf einem System funktioniert, auf dem die Original-Nutzer und -Gruppen der Sicherungsdateien nicht vorhanden sind, muss ich noch testen. Das sollte aber nicht das größte Problem sein...
Gruß L-H