2

我开始 Java 课程的学生开始学习文件 I/O,他们的一个项目涉及删除和重命名文件。我可以想出几十种可能出错的方法。

因此,使用 Java 的安全框架来限制他们的程序重命名、删除或覆盖不包含在特定目录中的文件会很有用。在目录之外阅读是可以的,而且该政策不需要是超级防弹的——这更多是为了防止意外损坏,而不是防止我的学生的恶意行为。

但是,我在学校的编程课程之外没有做过任何真正的 Java 工作,所以我不知道如何编写或激活策略文件。我可以使用什么简单的策略文件来实现这一点,以及在运行学生的代码时如何激活它?

4

1 回答 1

3

这是一个简单的策略文件,您可以使用它来限制对某个目录的文件写入。

grant codeBase "file:/some/root/path/sandbox/-" {
    permission java.io.FilePermission "*", "read";
    permission java.io.FilePermission "/tmp/*", "read, write";
};

它假定您将从 暂存和启动您的代码/some/root/path/sandbox,并且您将仅授予对该文件/tmp夹的写入权限。您可以根据需要添加额外的读取和写入权限。要调用,请使用以下命令行启动您的代码:

java -Djava.security.manager -Djava.security.policy=student.policy YourClassName

这假定您将策略存储在一个名为 student.policy 的文件中,该文件与您从中启动代码的文件夹位于同一文件夹中

于 2013-03-18T15:36:59.787 回答