1

我正在为 Oracle ZFS 存储设备(“ZS3”)开发一个使用 REST API 的脚本。该脚本使用 API 制作生产环境的快照和克隆,以用作临时测试环境。到目前为止一切都很好......除了我找不到为 SMB 协议指定“共享级别 ACL”设置的方法。

手动(通过 web ui)克隆会导致默认 ACL 为“所有人,完全访问”。原始共享(快照/克隆的源)的 ACL 具有带有特定 ACL 的特定用户列表。我假设此信息不在 ZFS 快照中,而是在 ZFS 之外维护,因此它不存在于克隆中(问:这是正确的吗?)。

我已经重读了几次 Oracle 文档“E56084.pdf”(“Oracle ZFS Storage Appliance RESTful API Guide,Release 2013.1.4.0”)。对“sharesmb”属性的引用含糊不清,没有其他与 SMB 或 ACL 相关的内容。我的脚本在传递给 API 以创建文件系统克隆的 JSON 有效负载中正确地将“sharesmb”值(用于启用 SMB 共享)设置为“sharesmb=SHARENAME,abe=off,dfsroot=false”。但是,我看不到可以为实际 ACL 列表设置的属性。对于 NFS,这很容易,它是“sharenfs”属性中传递的值。

源项目和共享的“GET”结果不包含对“SMB 共享级别 ACL”中列出的用户的任何引用,如 Web UI 中所示。

那么,如何通过 REST api 复制或在必要时显式设置共享上的“SMB 共享级别 ACL”?

谢谢!

4

1 回答 1

0

该系统有两种不同类型的 ACL,它们都存储在您的数据集中:

  1. 所有文件和目录上的 ACL(我们称它们为文件 ACL):这些用于一般的 Unix 访问,并且在共享文件系统时也是活动的。它们与每个文件或目录一起存储(使用/usr/bin/ls -V /pool/filesystem/yourFile/usr/bin/ls -Vd /pool/filesystem/yourDir查看它们)。
  2. 通过 SMB/CIFS 协议共享的文件系统上的 ACL(我们称它们为共享 ACL):这些仅在共享文件系统时使用,并且只能为整个文件系统设置,而不是内部的单个文件。用/usr/bin/ls -V /pool/filesystem/.zfs/shares/yourShareName来看他们。

不幸的是,我不知道如何通过 REST API 做到这一点,但至少你知道你的 ACL 应该在哪里结束。

于 2016-05-12T14:05:54.663 回答