Rsnapshot-Berechtigungsproblem bei der Remote-Sicherung von Macbook

1453
Timmy O'Mahony

Ich verwende rsnapshot auf meinem Heimserver, um Backups meines Macbooks über SSH zu erstellen. Alles ist konfiguriert und funktioniert einwandfrei, aber ich habe ein Problem mit den Berechtigungen.

Da ich verschiedene Benutzer auf meinem Macbook und meinem Heimserver habe, werden die gesicherten Dateien auf meinem Heimserver wie folgt gespeichert:

-rw------- 16 501 dialout 1650 Jun 24 21:09 .bash_history ... 

Ich kann mir vorstellen, dass 501 die ID ist, die dem Benutzer auf meinem Macbook Pro zugeordnet ist. Da dieser Benutzer auf meinem Home-Server nicht vorhanden ist, sehe ich einfach die Benutzer-ID. Ich bin nicht sicher über die Dialout-Gruppe.

Diese Berechtigungen bedeuten, dass ich beim Durchsuchen meiner gesicherten Dateien über meine Netzwerkfreigabe Berechtigungsprobleme bekomme.

Ist es möglich, die gesicherten Dateien unter dem Benutzer und der Gruppe meines Heimservers zu speichern, anstatt meinen Macbooks-Benutzer und seine Gruppe beizubehalten? Wenn ja, hat das irgendwelche Auswirkungen?

2

1 Antwort auf die Frage

2
ShadSterling

Es klingt wie das ist, was passiert:

  • rsnapshot kopiert numerische UID und GID von Ihrem Mac auf Ihren Server
  • Die UIDs für Ihr Mac-Konto und Ihr Server-Konto unterscheiden sich
  • Die Berechtigungen für die kopierten Dateien erlauben Ihrer Server-Uid keinen Zugriff auf sie

Hierfür gibt es einige Lösungsmöglichkeiten.

Lösung 1: Verwenden Sie rsync --usermapund--groupmap

rsnapshot verwendet rsync für die meiste Arbeit, und aktuelle Versionen von rsync haben die Möglichkeit, Uids und Gids zuzuordnen. Ich weiß nicht, ob rsnapshot so konfiguriert werden kann, dass diese Optionen an rsync übergeben werden, aber wenn dies der Fall ist, könnte das Ihr Problem lösen.

Lösung 2: Synchronisieren Sie Ihre Benutzer- und Gruppen-IDs.

Wenn auf Ihrer Workstation und Ihrem Server dasselbe Betriebssystem ausgeführt wird, ist dies wahrscheinlich möglich, aber es lohnt sich möglicherweise nicht, zu wechseln, wenn sie bereits anders konfiguriert sind. Wenn sie unterschiedliche Betriebssysteme verwenden, verfügen sie wahrscheinlich über inkompatible Zuweisungsschemata für UIDs. Es ist jedoch möglich, dass Sie nur die Uids für Ihren Benutzer synchronisieren. (Wenn nicht einer von ihnen Windows ist, ist dies überhaupt nicht möglich.) Wenn Sie die Konto-Uids ändern, werden die Besitzer-IDs der Dateien nicht geändert. Sie müssen dies als separaten Schritt tun. Das Ändern der Benutzer-ID eines Benutzers sollte keine große Sache sein, aber das Ändern der Benutzer-ID eines Dienstes kann ein Durcheinander sein.

Lösung 3: Trennen Sie den Kopierschritt

Wenn Sie alles als separaten Schritt auf den Server kopieren, bevor Sie rsnapshot ausführen, können Sie die Kopie mit einem Programm erstellen, das String-Namen anstelle von numerischen UIDs verwendet. Dies wird UIDs für alle übereinstimmenden Benutzernamen übersetzen. Unison, das einzige bidirektionale Dateisynchronisierungstool, das mir bekannt ist, wird dies tun. Es ist in den meisten Linux-Distributionen enthalten (aber nicht standardmäßig installiert) und für Macos über MacPorts oder als App- Paket verfügbar . Wenn Sie Dateien mit scp kopieren (standardmäßig in fast allen Fenstern außer Windows installiert und installiert), ist der Eigentümer der Benutzer, der beim empfangenden System angemeldet ist.

Lösung 3: Fügen Sie einen Uid / Gid-Übersetzungsschritt hinzu

Sie können die UID / GID ändern, nachdem rsnapshot abgeschlossen ist. Wenn Sie sich nur um eine oder zwei Uids kümmern, können Sie die Lösung anhand dieser Antwort anpassen :

find /your/rsynced/path -user 1000 -exec chown 505 {} \; find /your/rsynced/path -user 1001 -exec chown 700 {} \; 

Dies behebt Ihre uid / gid, bricht jedoch das Hardlinking von unveränderten Dateien von rsnapshots - rsnapshot wird keine Hardlink-Dateien herstellen, die sich in irgendeiner Weise unterscheiden, einschließlich Änderungen an Metadaten. Es werden keine Dateien mit unterschiedlichen Eigentümern oder sogar Dateien mit unterschiedlichen Zeitstempeln hardlink verknüpft. (Dies ist ein rsync-Verhalten, das von rsnapshot verwendet, jedoch nicht geändert wird.)

Natürlich können Sie einen weiteren Schritt hinzufügen, um das Hardlinking zu wiederholen.

Es sieht so aus, als könnte rsnapshot so konfiguriert werden, dass --usermap und --groupmap mit der Option rsync_long_args in rsnapshot.conf an rsync übergeben werden. siehe http://www.rsnapshot.org/rsnapshot.html ShadSterling vor 9 Jahren 0