Je suis tombé sur le même problème plus tôt dans la journée. J'ai découvert que vous pouvez autoriser les utilisateurs réguliers à effectuer certaines opérations avec la commande "zfs allow":
en tant que root, procédez comme suit sur le serveur :zfs autorisez votre_nom d'utilisateur à recevoir, créer, monter le stockage/les photos
Ensuite, vous pourrez vous connecter en ssh au serveur en utilisant votre_nom d'utilisateur et vous aurez les privilèges zfs à recevoir. Voir ici :http://docs.oracle.com/cd/E19253-01/819-5461/gfkco/index .html
Cela ne supprime pas complètement la connexion root, mais sécurise les choses au-delà d'une connexion complète.
Configurez une approbation SSH en copiant la clé publique de l'utilisateur local (généralement ~/.ssh/id_rsa.pub
) au fichier authorized_keys (~/.ssh/authorized_keys
) pour l'utilisateur distant. Cela élimine les invites de mot de passe et améliore la sécurité car les clés SSH sont plus difficiles à forcer brutalement. Vous voulez probablement aussi vous assurer que sshd_config
a PermitRootLogin without-password
-- Cela limite les connexions root à distance aux clés SSH uniquement (même le mot de passe correct échouera).
Vous pouvez ensuite ajouter de la sécurité en utilisant le ForceCommand
directive dans le fichier authorized_keys pour autoriser uniquement l'exécution de la commande zfs.
@analog900 est sur la bonne voie.
L'une des clés d'une sécurité accrue, notamment en évitant le besoin de connexions root, consiste à utiliser la structure d'autorisations intégrée de ZFS, ainsi qu'à structurer vos transferts de sauvegarde dans l'autre sens et pull vos sauvegardes sur le réseau, plutôt que de les pousser. La possibilité de sauvegarder des systèmes de fichiers sans accès root est l'une des principales réalisations de conception du système de fichiers ZFS.
Exécuter la tâche sur destination
et extrayez les données de source
, peut-être quelque chose comme :
- Sur la source machine, créer un compte utilisateur non privilégié
foo
et utilisezzfs allow
pour donner à ce compte la possibilité de créer et d'envoyer des instantanés :
zfs allow foo mount,snapshot,send,hold storage/photos
- Sur la destination machine, créer un compte non privilégié
bar
et donnez à ce compte la possibilité de recevoir/créer/monter des systèmes de fichiers :
zfs allow bar mount,create,receive storage/photos
- À destination, en tant qu'utilisateur
bar
, créez une clé ssh spécifiquement pour les tâches de sauvegarde. Installez la moitié publique de cette clé dans le.ssh
répertoire de l'utilisateurfoo
sur la machine source. Cela donne à l'utilisateur[email protected]
accès sécurisé par connexion ssh au[email protected]
Compte. Modifiez également le fichier ~bar/.ssh/config surdestination
afin qu'il utilise automatiquement le nom de fichier de clé SSH correct (que vous avez créé précédemment) et le nom d'utilisateur :
Host source
Hostname FQDN.of.source.example.com
User foo
IdentityFile ~bar/.ssh/backup_key_id_rsa
- Exécutez maintenant votre tâche de sauvegarde à partir de
[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
Le faire de cette façon nécessite non accès root quel qu'il soit.