![](/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.