java 目录权限与 AccessController.checkPermission

标签 java jakarta-ee

我尝试通过 checkPermission() 方法获取目录权限,如代码中所示。

private static boolean dirPermissions(String dir, String perm) {
    try {
        AccessController.checkPermission(new FilePermission(dir, perm));
        return true;
    } catch (AccessControlException e) {
        return false;
    }
}

大多数相关 File 类方法(例如 canRead()、canWrite() 等)的 java (<=6) 文档表明它们对文件有用,但对目录没有用(我在这里错了吗?) .

我没有在服务器上运行代码,或者运行多个线程并且需要在它们之间保存acc,或者做任何棘手的事情,它尽可能简单 - 一个新的eclipse安装与本地运行的jvm和代码,并且我正在访问本地目录。

但是,对于显然jvm具有读/写权限的文件夹,checkPermission总是抛出异常(即访问被拒绝),因为我可以设法创建文件夹并写入文件等。

大概它与本地 java.policy 无关,因为我成功写入文件,所以我拥有必要的安全权限。有什么想法...?

最佳答案

首先,您可能应该使用SecurityManager

FilePermission 可以很好地处理目录。您可能想要包含下面包含的所有文件和目录。在末尾使用 /- 即可。对于非递归包含的文件和目录,请使用 /*

如果当前访问控制上下文 (acc) 的任何框架(或更确切地说是其 ProtectionDomain)不具有所需的权限,checkPermission 将引发异常。

FilePermission 与操作系统权限无关。

关于java 目录权限与 AccessController.checkPermission,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4483303/

相关文章:

java - Jersey 到 json,返回扩展父类(super class)型的实例

java - 为什么 list.parallelStream().forEach() 不处理 Java 中列表中的所有元素?

java - 如何将 2 个数组项相乘

java - 如何添加过滤功能?

java - Android 将项目添加到全局上下文菜单

java - 无法访问同一包中的类成员

java - 如何通过 Web 应用程序访问开箱即用的 Web 脚本(露天)

java - session Bean 是如何工作的?

java - java EE 中的事务是什么?

java - 如何让 web-fragment.xml 工作