【发布时间】:2015-07-15 21:47:10
【问题描述】:
我正在编写一个调用不属于我的库代码的 Java 程序;所以我在 SecurityManager 中运行程序,只有最低要求的权限。
我只需要在 main() 方法的前几行中才需要一个特殊权限...然后再也不需要了。
是否有可能在 Java 中减少执行过程中某个点的权限?
我的理解(我希望这是正确的)是Apache httpd 这样做的,首先使用它的root 权限绑定到端口80/443 等,然后使用系统调用setuid()(或类似的)来假设程序其余部分的权限较低。原则上,我原以为在 Java VM 中也是可能的。
【问题讨论】:
-
只需在有问题的代码行之后安装 SecurityManager。
-
评论更新我从来没有找到一个可接受的方法来做到这一点。当使用 java.security 配置 SecurityManager 时,SecurityManager 会自动允许各种显而易见的事情,例如加载类路径中的所有类。但是在运行时引入自定义 SecurityManager 时,没有权限。你需要打开谷仓的门才能做任何事情。在我的案例中,加载和初始化类的最低要求包括允许反射和修改系统属性。所以这不值得。
标签: java securitymanager