繁体   English   中英

策略文件中的Java安全授予权限

[英]Java security grant permission in the policy file

我启用了Java安全性,以授予对/ tmp文件夹中的文件夹的文件许可权。 以下是授予文件中添加的权限

permission "java.io.FilePermission" "/tmp/tmpScript/-", "read, write, delete, execute";

但是在执行应用程序时,引发了异常-

java.security.AccessControlException: access denied ("java.io.FilePermission" "<<ALL FILES>>" "execute")

我正在使用ProcessBuilder执行脚本,并在ProcessBuilder构造函数文件中传递了绝对路径和参数。 但是看一下Java源代码

public void checkExec(String cmd) {
        File f = new File(cmd);
        if (f.isAbsolute()) {
            checkPermission(new FilePermission(cmd,
                SecurityConstants.FILE_EXECUTE_ACTION));
        } else {
            checkPermission(new FilePermission("<<ALL FILES>>",
                SecurityConstants.FILE_EXECUTE_ACTION));
        }
    }

不知道为什么f.isAbsolute()返回false,因此尝试使用文件许可权执行else部分。

https://docs.oracle.com/javase/7/docs/api/java/io/File.html#isAbsolute()

如果此抽象路径名是绝对的,则File.isAbsolute()方法返回true,否则返回false

从您的权限命令来看,我猜您正在使用基于UNIX的系统,因此绝对路径名含义与此有关:

在UNIX系统上,如果路径名的前缀为“ /”,则该路径名是绝对的

这意味着传递给checkExec函数的cmd String变量的前缀不是“ /”(第一个字符不是“ /”),因此f.isAbsolute返回false。

ProcessBuilder可以正常工作,我添加了/ usr / bin权限,并且可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM