语境
我正在设置ZFS 自动备份在我的家庭服务器上进行异地备份。下面打印的所有命令均以非 root 身份运行。
问题
当发出以下命令时,会出现来自目标机器的“权限被拒绝”错误:
(zfs send --large-block --embed --raw --verbose --parsable --props \
-i @previous_snap localpool/mydataset@newest_snap) | \
(ssh ostsite 'zfs recv -u -o canmount=noauto -v -s \
remotepool/myserver/localpool/mydataset')
完整命令输出:
incremental localpool/mydataset@previous_snap localpool/mydataset@newest_snap 624
size 624
receiving incremental stream of localpool/mydataset@newest_snap into remotepool/myserver/localpool/mydataset@newest_snap
received 1.31K stream in 1 seconds (1.31K/sec)
cannot set property for 'remotepool/myserver/localpool/mydataset': permission denied
迄今为止的发现
ZFS 没有明确说明无法设置哪个属性,但我请求设置的唯一属性是canmount=noauto
。在目标机器上,我已将一些 zfs 权限委托给接收用户:
sudo zfs allow myuser snapshot,receive,create,mountpoint,mount,userprop remotepool/myserver
当我手动执行时zfs set canmount=noauto remotepool/myserver/localpool/mydataset
,这会成功。
问题
- 我如何才能看到哪个属性无法设置?
- 我如何才能允许设置此属性(在接收时)?
编辑
它与属性无关canmount
——只要您已 zfs 允许,该属性就可以正常设置。相反,我缺少委托keylocation
。这是必需的,因为发送--raw
不会解密/重新加密,因此需要prompt
在到达时将密钥位置更改为。
此外,但这纯粹是 zfs-autobackup 的事情,我缺少hold
和release
代表团。
答案1
它与属性无关canmount
——只要您已 zfs 允许,该属性就可以正常设置。相反,我缺少委托keylocation
。这是必需的,因为发送--raw
不会解密/重新加密,因此需要在到达时将其更改keylocation
为“ ”。prompt
此外,但这纯粹是 zfs-autobackup 的事情,我错过了保留和释放委派。