Me encontré con el mismo problema hoy. Descubrí que puede autorizar a los usuarios regulares a realizar ciertas operaciones con el comando "zfs allow":
como root, haga lo siguiente en el servidor:zfs permita que su_nombre de usuario reciba, cree, monte almacenamiento/fotos
Luego, podrá acceder al servidor usando su_nombre de usuario y tendrá privilegios de zfs para recibir. Consulte aquí:http://docs.oracle.com/cd/E19253-01/819-5461/gfkco/index .html
Esto no elimina por completo el inicio de sesión raíz, pero asegura cosas más allá de un inicio de sesión completo.
Configure una confianza SSH copiando la clave pública del usuario local (generalmente ~/.ssh/id_rsa.pub
) al archivo de claves_autorizadas (~/.ssh/authorized_keys
) para el usuario remoto. Esto elimina las solicitudes de contraseña y mejora la seguridad, ya que las claves SSH son más difíciles de forzar. Probablemente también quieras asegurarte de que sshd_config
tiene PermitRootLogin without-password
-- esto restringe los inicios de sesión raíz remotos solo a claves SSH (incluso la contraseña correcta fallará).
Luego puede agregar seguridad usando el ForceCommand
directiva en el archivo authorized_keys para permitir que solo se ejecute el comando zfs.
@analog900 está en el camino correcto.
Una clave para aumentar la seguridad, incluida la evitación de la necesidad de inicios de sesión raíz, es usar la estructura de permisos integrada de ZFS y también estructurar sus transferencias de copia de seguridad al revés y tirar. sus copias de seguridad a través de la red, en lugar de enviarlas. La capacidad de realizar copias de seguridad de sistemas de archivos sin acceso raíz es uno de los principales logros de diseño del sistema de archivos ZFS.
Ejecute el trabajo en destination
y extraiga los datos de source
, tal vez algo como:
- En la fuente máquina, cree una cuenta de usuario sin privilegios
foo
y usazfs allow
para darle a esa cuenta la capacidad de crear y enviar instantáneas:
zfs allow foo mount,snapshot,send,hold storage/photos
- En el destino máquina, cree una cuenta sin privilegios
bar
y dar a esa cuenta la capacidad de recibir/crear/montar sistemas de archivos:
zfs allow bar mount,create,receive storage/photos
- En destino, como usuario
bar
, cree una clave ssh específicamente para trabajos de copia de seguridad. Instale la mitad pública de esa clave en el.ssh
directorio del usuariofoo
en la máquina fuente. Esto le da al usuario[email protected]
acceso seguro de inicio de sesión ssh al[email protected]
cuenta. Además, edite el archivo ~bar/.ssh/config endestination
para que use automáticamente el nombre de archivo de clave SSH correcto (que creó anteriormente) y el nombre de usuario:
Host source
Hostname FQDN.of.source.example.com
User foo
IdentityFile ~bar/.ssh/backup_key_id_rsa
- Ahora ejecute su trabajo de copia de seguridad desde
[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
Hacerlo de esta manera requiere no acceso de root en absoluto.