如何:每个用户的 ZFS 数据集

如何:每个用户的 ZFS 数据集

我和我的室友打算在家里用 ZFS 搭建一个 NAS 服务器,但我们每个人都想拥有自己独立的空间。

是否可以创建多个不同的数据集并将每个数据集分配给一个用户,以便数据只能由所有者访问?

答案1

对的,这是可能的。我建议您尝试在基础数据集上使用创建时间权限。这是通过使用-c选项来完成的zfs allow,但首先您将允许用户创建新数据集。例如,您可以首先拥有一个基础数据集mypool/base,并允许使用此基础数据集在本地创建权限allow -l -u <user> <permission>[,<permission>...] mypool/base。这将允许 user1 创建自己的数据集mypool/base/<user1data>,同样为其他用户创建数据集,但不允许他们销毁或挂载其他用户的数据集。

现在,您可以使用该zfs allow -c选项来允许对后代数据集更广泛的权限,一旦您创建自己的数据集,这些权限就足够了。

从手册页:

zfs allow -c perm|@setname[,...] filesystem|volume Sets "create time" permissions. These permissions are granted (locally) to the creator of any newly-created descendent file system.

因此,通过提供更广泛的创建时间权限,每个用户都可以拥有仅适用于以下数据集的全部权限:他们已经创造出来了。使用一些伪造的数据集进行尝试,只是为了了解它是如何工作的。

或者,用户必须拥有他们尝试挂载的数据集的挂载点,以便您可以将数据集挂载点预先配置为位于相应用户拥有的目录上。

相关内容