Oracle ZFS存储设备:如何通过REST API配置SMB共享级ACL?

时间:2015-06-24 15:53:53

标签: rest zfs

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

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

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

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

那么,如何通过REST api复制或明确设置共享上的“SMB共享级别ACL”?

谢谢!

1 个答案:

答案 0 :(得分: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查看它们。
  3. 不幸的是我不知道如何通过REST API,但至少你知道你的ACL应该在哪里结束。