我想获得特定用户的文件权限。目前我正在做这样的事情:
File file1 = new File(filePath);
System.out.println("write permissions: " + file1.canWrite);
//and other attributes
这提供了用户执行程序的权限。但问题是我想指定一个用户或至少打印文件的所有权限,而不仅仅是所有用户。 有什么想法吗?
最佳答案
没有独立于实现的方法来获取此信息。
您必须查看正在执行的平台。例如在典型的 UNIX 文件系统上,有所有者、组和世界权限。
要检查用户是否是文件的所有者,请在此处回答: Get file/directory owner's name in Java 正如上述链接中的答案所示,在某些实现中获取文件所有者可能会失败。
用户可能被禁止以所有者身份读/写文件,但仍然可以基于组或世界权限执行操作。要检查组,您必须根据文件系统和操作系统查询 LDAP 或 UNIX 组或 Active Directory。
当操作系统和文件系统支持 ACL 以及常规 UNIX 权限(可以定义细粒度的每个用户权限)时,情况会变得更加复杂。 Java 没有标准 API 来访问这些。请参阅"AclFileAttributeView aclAttr" always null on OpenSuSE Linux 。现有的 java.nio API 在这里并不总是有用。
粘滞位在大多数 UNIX 中也起着不允许非目录所有者移动或删除文件的作用,但语义有所不同,请阅读:https://en.wikipedia.org/wiki/Sticky_bit
TL;DR:没有简单的方法,根据您的使用情况,您必须调用操作系统来获取每个用户的文件权限。
关于java - 获取特定用户的文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52419496/