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



在我的开发代码中,我必须从samba服务器" cifs" - 文件共享中带来文件所有者属性。我如何通过使用Java中的任何API来获得它。

预先感谢您。

我已经使用了Ace&jcifs jar的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;
}

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

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

链接到补丁文件是:https://jcifsamba.org/src/patches/getownersid.patch

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

最新更新