Ich bin heute auf das gleiche Problem gestoßen. Ich habe festgestellt, dass Sie normale Benutzer autorisieren können, bestimmte Operationen mit dem Befehl "zfs allow" auszuführen:
Führen Sie als Root Folgendes auf dem Server aus:zfs erlauben Sie Ihrem_Benutzernamen, Speicher/Fotos zu empfangen, zu erstellen, bereitzustellen
Danach können Sie mit Ihrem_Benutzernamen per SSH auf den Server zugreifen und ZFS-Berechtigungen erhalten. Siehe hier:http://docs.oracle.com/cd/E19253-01/819-5461/gfkco/index .html
Dadurch wird die Root-Anmeldung nicht vollständig entfernt, aber es werden Dinge gesichert, die über eine Anmeldung mit vollem Funktionsumfang hinausgehen.
Richten Sie eine SSH-Vertrauensstellung ein, indem Sie den öffentlichen Schlüssel des lokalen Benutzers kopieren (normalerweise ~/.ssh/id_rsa.pub
) in die Datei „authorized_keys“ (~/.ssh/authorized_keys
) für den entfernten Benutzer. Dies eliminiert Passwortabfragen und verbessert die Sicherheit, da SSH-Schlüssel schwerer durch Bruteforce zu erzwingen sind. Sie möchten wahrscheinlich auch sicherstellen, dass sshd_config
hat PermitRootLogin without-password
-- dies beschränkt Remote-Root-Anmeldungen nur auf SSH-Schlüssel (selbst das richtige Passwort schlägt fehl).
Sie können dann Sicherheit hinzufügen, indem Sie ForceCommand
verwenden Direktive in der Datei „authorized_keys“, um nur die Ausführung des zfs-Befehls zuzulassen.
@analog900 ist auf dem richtigen Weg.
Ein Schlüssel zu erhöhter Sicherheit, einschließlich der Vermeidung der Notwendigkeit von Root-Anmeldungen, besteht darin, die integrierte Berechtigungsstruktur von ZFS zu verwenden und Ihre Sicherungsübertragungen auch umgekehrt zu strukturieren und zu ziehen Ihre Backups über das Netzwerk, anstatt sie zu pushen. Die Fähigkeit, Dateisysteme ohne Root-Zugriff zu sichern, ist eine der wichtigsten Designleistungen des ZFS-Dateisystems.
Führen Sie den Job auf destination
aus und ziehen Sie die Daten aus source
, vielleicht so etwas wie:
- Auf der Quelle erstellen Sie ein nicht privilegiertes Benutzerkonto
foo
und verwenden Siezfs allow
um diesem Konto die Möglichkeit zu geben, Snapshots zu erstellen und zu senden:
zfs allow foo mount,snapshot,send,hold storage/photos
- Am Ziel erstellen Sie ein nicht privilegiertes Konto
bar
und geben Sie diesem Konto die Fähigkeit, Dateisysteme zu empfangen/erstellen/mounten:
zfs allow bar mount,create,receive storage/photos
- Am Ziel, als Benutzer
bar
, erstellen Sie einen SSH-Schlüssel speziell für Sicherungsjobs. Installieren Sie die öffentliche Hälfte dieses Schlüssels im.ssh
Verzeichnis des Benutzersfoo
auf der Quellmaschine. Dies gibt dem Benutzer[email protected]
Sicherer SSH-Login-Zugriff auf[email protected]
Konto. Bearbeiten Sie außerdem die Datei ~bar/.ssh/config aufdestination
damit es automatisch den korrekten SSH-Schlüsseldateinamen (den Sie zuvor erstellt haben) und Benutzernamen verwendet:
Host source
Hostname FQDN.of.source.example.com
User foo
IdentityFile ~bar/.ssh/backup_key_id_rsa
- Führen Sie jetzt Ihren Backup-Job von
[email protected]
aus :
dt=$(date +%Y-%m-%d_%H-%M-%S)
ssh source "zfs snap storage/[email protected]_$dt"
ssh source "zfs send -R storage/[email protected]_$dt" | zfs receive storage/photos
Um es auf diese Weise zu tun, ist nein erforderlich Root-Zugriff.