如何从 SAMBA (CIFS) 获取文件所有者属性?
How to get File Owner attribute from SAMBA (CIFS)?
在我的开发代码中,我必须从 SAMBA 服务器 "CIFS"- 文件共享中引入文件所有者属性。我如何通过在 JAVA.
中使用任何 API 来获得它
提前致谢。
JCIFS 1.3.18 版有一个补丁可用于获取文件的所有者。
Link 到 JCIFS java lib 是:https://jcifs.samba.org/src/jcifs-1.3.18.jar
Link到补丁文件是:https://jcifs.samba.org/src/patches/GetOwnerSid.patch
你必须先获取1.3.18版本的源码,打补丁后生成JAR包。另请注意,此补丁不会解析所有者的 SID。因此,您可能需要添加代码来解析 SID。
我使用了 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;
}
在我的开发代码中,我必须从 SAMBA 服务器 "CIFS"- 文件共享中引入文件所有者属性。我如何通过在 JAVA.
中使用任何 API 来获得它提前致谢。
JCIFS 1.3.18 版有一个补丁可用于获取文件的所有者。
Link 到 JCIFS java lib 是:https://jcifs.samba.org/src/jcifs-1.3.18.jar
Link到补丁文件是:https://jcifs.samba.org/src/patches/GetOwnerSid.patch
你必须先获取1.3.18版本的源码,打补丁后生成JAR包。另请注意,此补丁不会解析所有者的 SID。因此,您可能需要添加代码来解析 SID。
我使用了 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;
}