1
我正在使用java.nio.file.attribute.AclFileAttributeView和AclEntry来收集系统上的所有文件ACL。事情很直接,直到我意识到图书馆没有办法检查委托人是否是用户或组。Java nio AclEntry。如何知道委托人是组还是用户
该函数只需要返回具有读权限的用户(不是组),你有什么建议吗?
这里是我的代码
public String[] getViewer(String path)
{
// List of the ACL enum of read permission
List<AclEntryPermission> readAcl = new ArrayList<AclEntryPermission>();
readAcl.add(AclEntryPermission.READ_ATTRIBUTES);
readAcl.add(AclEntryPermission.READ_DATA);
readAcl.add(AclEntryPermission.SYNCHRONIZE);
readAcl.add(AclEntryPermission.READ_NAMED_ATTRS);
AclFileAttributeView acl = Files.getFileAttributeView(Paths.get(path),
AclFileAttributeView.class);
List<String> names = new ArrayList<String>();
if (acl!=null)
{
try {
List<AclEntry> aclList = acl.getAcl();
for (AclEntry entry: aclList)
{
//System.out.println(a.principal() + ":");
//System.out.println(entry.permissions() + "\n");
if (entry.permissions().containsAll(readAcl))
{
// Only add principal if it is not a group
if (entry.principal.isGroup())
names.add(entry.principal().getName());
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return names.toArray(new String[]{});
}
谢谢,我用它在AD中查看组。 – MikeNQ