如何使用 ProcessBuilder 限制目录?
How to restrict directory with ProcessBuilder?
我希望一个进程 write
只能访问一个目录。如果进程试图写入另一个目录,则应加以限制。
我试过directory()
方法,但这只能设置默认值。
ProcessBuilder processBuilder = new ProcessBuilder();
File allowedDir = new File(System.getProperty("user.home") + "/allowedDirectory/");
// setting allowed directory
processBuilder.directory(allowedDir);
//expect this to fail
processBuilder.command("cmd.exe", "/c", "rmdir /s /q \"C:\Users\restrictedDirectory\restrictedFolder\"");
Process process = processBuilder.start();
int errCode = process.waitFor();
然而,我预期会失败的命令有效并删除了 restrictedDirectory
中的文件。如何限制 ProcessBuilder
只允许 write
访问一个目录?
那是不可能的 - ProcessBuilder 只是在您的计算机上执行程序,它不会 运行 它们在沙箱中。
ProcessBuilder#directory(File)
设置进程的工作目录。
我希望一个进程 write
只能访问一个目录。如果进程试图写入另一个目录,则应加以限制。
我试过directory()
方法,但这只能设置默认值。
ProcessBuilder processBuilder = new ProcessBuilder();
File allowedDir = new File(System.getProperty("user.home") + "/allowedDirectory/");
// setting allowed directory
processBuilder.directory(allowedDir);
//expect this to fail
processBuilder.command("cmd.exe", "/c", "rmdir /s /q \"C:\Users\restrictedDirectory\restrictedFolder\"");
Process process = processBuilder.start();
int errCode = process.waitFor();
然而,我预期会失败的命令有效并删除了 restrictedDirectory
中的文件。如何限制 ProcessBuilder
只允许 write
访问一个目录?
那是不可能的 - ProcessBuilder 只是在您的计算机上执行程序,它不会 运行 它们在沙箱中。
ProcessBuilder#directory(File)
设置进程的工作目录。