【问题标题】:Oracle ZFS Storage appliance: How to configure SMB share level ACLs via REST API?Oracle ZFS 存储设备:如何通过 REST API 配置 SMB 共享级别 ACL?
【发布时间】:2016-05-12 22:05:54
【问题描述】:

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

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

我已经重新阅读了几次 Oracle 文档“E56084.pdf”(“Oracle ZFS 存储设备 RESTful API 指南,版本 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”?

谢谢!

【问题讨论】:

    标签: rest zfs


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-01-09
      • 2011-10-02
      • 2018-03-29
      • 2021-05-13
      • 1970-01-01
      • 2019-12-13
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多