![](/img/trans.png)
[英]grant SQLPermission and permission to connect to the database in policy file 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.