簡體   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