如何从SAMBA(CIFS)获取文件所有者属性?

时间:2015-05-08 01:18:47

标签: java-7 samba nfs jcifs fileshare

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

提前谢谢。

2 个答案:

答案 0 :(得分:1)

我使用过ACE& SID类的jcifs jar获取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;
}

答案 1 :(得分: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。