Mi sono imbattuto nello stesso problema oggi. Ho scoperto che puoi autorizzare utenti regolari a eseguire determinate operazioni con il comando "zfs allow":
come root, esegui le seguenti operazioni sul server:zfs consenti a tuo_nomeutente di ricevere, creare, montare archiviazione/foto
Successivamente, sarai in grado di accedere al server tramite ssh utilizzando your_username e avrai i privilegi zfs da ricevere. Vedi qui:http://docs.oracle.com/cd/E19253-01/819-5461/gfkco/index .html
Questo non rimuove completamente l'accesso root, ma protegge le cose oltre un accesso completo.
Imposta un trust SSH copiando la chiave pubblica dell'utente locale (di solito ~/.ssh/id_rsa.pub
) nel file authorized_keys (~/.ssh/authorized_keys
) per l'utente remoto. Ciò elimina le richieste di password e migliora la sicurezza poiché le chiavi SSH sono più difficili da applicare alla forza bruta. Probabilmente vuoi anche assicurarti che sshd_config
ha PermitRootLogin without-password
-- questo limita gli accessi root remoti alle sole chiavi SSH (anche la password corretta fallirà).
Puoi quindi aggiungere sicurezza usando il ForceCommand
direttiva nel file authorized_keys per consentire solo l'esecuzione del comando zfs.
@analog900 è sulla strada giusta.
Una chiave per una maggiore sicurezza, incluso evitare la necessità di accessi root, è utilizzare la struttura di autorizzazioni integrata di ZFS e anche strutturare i trasferimenti di backup al contrario e tirare i tuoi backup sulla rete, invece di spingerli. La capacità di eseguire il backup dei filesystem senza accesso root è uno dei principali risultati di progettazione del filesystem ZFS.
Esegui il lavoro su destination
ed estrai i dati da source
, forse qualcosa come:
- Sulla fonte computer, creare un account utente non privilegiato
foo
e usazfs allow
per dare a quell'account la possibilità di creare e inviare istantanee:
zfs allow foo mount,snapshot,send,hold storage/photos
- Sulla destinazione macchina, crea un account non privilegiato
bar
e dai a quell'account la possibilità di ricevere/creare/montare filesystem:
zfs allow bar mount,create,receive storage/photos
- A destinazione, come utente
bar
, creare una chiave ssh specifica per i processi di backup. Installa la metà pubblica di quella chiave nel.ssh
directory dell'utentefoo
sulla macchina di origine. Questo dà all'utente[email protected]
proteggere l'accesso tramite login ssh al[email protected]
account. Inoltre, modifica il file ~bar/.ssh/config sudestination
in modo che utilizzi automaticamente il nome file della chiave SSH corretto (che hai creato in precedenza) e il nome utente:
Host source
Hostname FQDN.of.source.example.com
User foo
IdentityFile ~bar/.ssh/backup_key_id_rsa
- Ora esegui il processo di backup da
[email protected]
:
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
Per farlo in questo modo è necessario no qualsiasi accesso root.