在运行本地代码时强制Java具有只读权限

时间:2012-08-08 00:59:24

标签: java permissions active-directory

我最近被提升为管理员,这意味着我的活动目录用户名获得了更多权限。因此,我现在有权读取/写入我们的服务器,这有点令人不安。

之前,如果我运行任何运行my_remote_file.delete()之类的本地代码,那么它会忽略该方法。 (从技术上讲,它会返回false。)但是,由于我的活动目录用户名现在在我们的服务器上获得了所有权限,因此Java运行该本地代码没有问题,它实际上会影响我们的服务器。

我不想假设在运行本地代码时我会一直小心,我想知道你们是否有任何想法只在我在Eclipse中运行本地代码的情况下放弃我的权限。换句话说,当我在Eclipse中运行任何本地代码时,我希望对所有服务器目录具有只读权限。

我想到的一个解决方案是简单地创建另一个用户,在活动目录中具有只读权限,但我认为维护两个帐户将来不会很好地扩展。

1 个答案:

答案 0 :(得分:2)

这不会完全“忽略”my_remote_file.delete()等方法,但如果您使用策略文件,它会让您更改某些权限。这将使您无法删除文件/local/file

grant {
    permission java.io.FilePermission
    "/local/file", "read";
};

然后调用它:

java -Djava.security.manager=default -Djava.security.policy=polfile YourEntryPointClass

(您可以在Eclipse中执行类似的操作,可能在VM参数下)

或者您可以创建自定义SecurityManager并实现投放SecurityExceptions的checkDelete()checkWrite()方法。它可能会给你一个与物理上更改本地文件系统权限类似的结果,而不必创建一个无特权的用户。