0

在我的开发代码中,我必须从 SAMBA 服务器“CIFS”-文件共享中引入文件所有者属性。我如何通过在 JAVA 中使用任何 API 来获得它。

先感谢您。

4

2 回答 2

1

我使用了 jcifs jar 的 ACE 和 SID 类来获取 smbFile 的所有者 ID。使用相同的方法,任何人都可以获取 sid、域名、域 sid 等...在以下方法中,我只需要从 SID 的帐户名中检索的所有者 ID。

public String retrieveOwnerIdOfFile(SmbFile smbFile) throws IOException {

    String userName = "";
    SID sid = null;

    ACE[] acl = smbFile.getSecurity(true);
    for (int i = 0; i < acl.length; i++) {
        sid = acl[i].getSID();
        if (sid.getType() == 1 && sid.getTypeText().equalsIgnoreCase("user")
                && sid.getAccountName() != null) {
            userName = sid.getAccountName();
            break;
        }
    }

    return userName;
}
于 2017-03-07T14:43:52.843 回答
0

JCIFS 版本 1.3.18 有一个补丁可用于获取文件的所有者。

JCIFS java lib的链接是:https ://jcifs.samba.org/src/jcifs-1.3.18.jar

补丁文件的链接是:https ://jcifs.samba.org/src/patches/GetOwnerSid.patch

您必须获取 1.3.18 版本的源代码,然后在应用补丁后生成 JAR。另外,请注意,此补丁无法解析所有者的 SID。因此,您可能需要添加代码来解析 SID。

于 2015-08-04T06:13:45.470 回答