【问题标题】:Grant permission to a particular directory to avoid java.security.AccessControlException授予对特定目录的权限以避免 java.security.AccessControlException
【发布时间】:2014-04-08 13:45:38
【问题描述】:

我在使用策略文件设置安全管理器后尝试读取文本文件-

grant  
{
  permission java.io.FilePermission "/home/esamsar/NetBeansProjects/FilePermissionDemo/src/cheese.txt", "write";
};

它工作正常,但是当我向它添加代码库时,每次都会遇到 java.security.AccessControlException。 我的操作系统是 Ubuntu,我尝试了以下方法,但都遇到了同样的异常。

grant codebase  "file:/home/esamsar/NetBeansProjects/FilePermissionDemo/src/*"
grant codebase  "file://home/esamsar/NetBeansProjects/FilePermissionDemo/src/*"
grant  codebase "/home/esamsar/NetBeansProjects/FilePermissionDemo/src/*"

有人能指出添加代码库以授予特定目录权限的正确方法吗? 提前致谢。

【问题讨论】:

  • 请发布您的堆栈跟踪。为什么您的代码库包含src 目录?它应该由 JAR 文件组成,或者最坏的情况是 .class 文件的目录。源目录在运行时不会存在。
  • 谢谢。使用授权代码库“file://home/esamsar/NetBeansProjects/FilePermissionDemo/build/classes/*”后现在抛出一个安全异常。我正在使用 textFile.canWrite();这会导致同样的异常。
  • 除非您按要求发布堆栈跟踪,否则您的问题将无法回答。我还想在使用 -Djava.security.debug=access,failure 运行时查看相关输出。

标签: java permissions policy securitymanager


【解决方案1】:

你试过了吗:

grant codebase "file:///home/esamsar/NetBeansProjects/FilePermissionDemo/classes/-" {
  permission java.io.FilePermission "/home/esamsar/NetBeansProjects/FilePermissionDemo/src/cheese.txt", "write";
};

这里的重点是允许您的 IDE 输出已编译类的文件夹(这里我假设为 <your_project_path>/classes),以 /- 结尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 2011-02-23
    • 2017-07-06
    相关资源
    最近更新 更多