Java Runtime.getRuntime().exec如何在安全管理器下执行

土匪八号 2011-07-26 04:02:04
我在开发的过程中需要使用Java的Runtime.getRuntime().exec()的方法执行一些windows程序主要是.EXE程序。但又得保证这些.exe程序是安全的,将例如关机操作等不安全操作给阻止掉。网上搜了很多资料有的说用checkExec();但我不知道如何使用
...全文
206 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
土匪八号 2011-10-31
  • 打赏
  • 举报
回复
有个安全沙箱可以解决[Quote=引用 13 楼 cenkaijie 的回复:]
楼主,你的问题解决没有啊~~我也想问同样的问题~~
[/Quote]
cenkaijie 2011-10-24
  • 打赏
  • 举报
回复
楼主,你的问题解决没有啊~~我也想问同样的问题~~
土匪八号 2011-07-27
  • 打赏
  • 举报
回复
不行啊,我们的系统是放在服务器上的啊,如果该服务器上的系统设置会影响其他系统运行[Quote=引用 8 楼 qybao 的回复:]
引用 5 楼 fujianianhua 的回复:
怎么设置啊,是在系统里设置还是在Java 代码中设置

引用 3 楼 qybao 的回复:
设置执行用户的权限就可以了
比如关机操作等命令,可以设置它的执行权限,如果某用户没有执行权限,就会出错了

当然是在系统设置了
[/Quote]
qybao 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fujianianhua 的回复:]
怎么设置啊,是在系统里设置还是在Java 代码中设置

引用 3 楼 qybao 的回复:
设置执行用户的权限就可以了
比如关机操作等命令,可以设置它的执行权限,如果某用户没有执行权限,就会出错了
[/Quote]
当然是在系统设置了
土匪八号 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fujianianhua 的回复:]
引用 5 楼 fujianianhua 的回复:
怎么设置啊,是在系统里设置还是在Java 代码中设置

引用 3 楼 qybao 的回复:
设置执行用户的权限就可以了
比如关机操作等命令,可以设置它的执行权限,如果某用户没有执行权限,就会出错了

[/Quote]我再顶
土匪八号 2011-07-27
  • 打赏
  • 举报
回复
我现在做的就是OJ,苦于只有自己一个人摸索[Quote=引用 10 楼 smcwwh 的回复:]
不是很清楚,
原来听别人说过个大概,
大致思路是:
检查.exe文件中调用到的系统调用,
系统调用如论在windows/linux系统中都是可以确定的,
如果调用了不允许的系统调用,就不执行这个.exe文件。
跟各大高校的OJ系统评判程序是一样的。
[/Quote]
qybao 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fujianianhua 的回复:]
不行啊,我们的系统是放在服务器上的啊,如果该服务器上的系统设置会影响其他系统运行

引用 8 楼 qybao 的回复:
引用 5 楼 fujianianhua 的回复:
怎么设置啊,是在系统里设置还是在Java 代码中设置

引用 3 楼 qybao 的回复:
设置执行用户的权限就可以了
比如关机操作等命令,可以设置它的执行权限,如果某用户没有执行权限,就会出错了

当然是在系……
[/Quote]
一般像重启关机这种命令,不是管理员身份是不让执行的,你非要给这个执行用户这么大的权限吗?
你可以尝试
SecurityManager的checkExec方法,不过这样你就要自己管理安全管理器了
可以试试看写个class extends SecurityManager,重写checkExec方法
调用System.setSecurityManager()来设置安全管理器
Jaya1989 2011-07-27
  • 打赏
  • 举报
回复
不是很清楚,
原来听别人说过个大概,
大致思路是:
检查.exe文件中调用到的系统调用,
系统调用如论在windows/linux系统中都是可以确定的,
如果调用了不允许的系统调用,就不执行这个.exe文件。
跟各大高校的OJ系统评判程序是一样的。
土匪八号 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fujianianhua 的回复:]
怎么设置啊,是在系统里设置还是在Java 代码中设置

引用 3 楼 qybao 的回复:
设置执行用户的权限就可以了
比如关机操作等命令,可以设置它的执行权限,如果某用户没有执行权限,就会出错了
[/Quote]顶
土匪八号 2011-07-26
  • 打赏
  • 举报
回复
怎么设置啊,是在系统里设置还是在Java 代码中设置[Quote=引用 3 楼 qybao 的回复:]
设置执行用户的权限就可以了
比如关机操作等命令,可以设置它的执行权限,如果某用户没有执行权限,就会出错了
[/Quote]
qybao 2011-07-26
  • 打赏
  • 举报
回复
设置执行用户的权限就可以了
比如关机操作等命令,可以设置它的执行权限,如果某用户没有执行权限,就会出错了
土匪八号 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fujianianhua 的回复:]
有的好像用的是在java.policy中增加 permission java.io.FilePermission "exe_path", "execute"; 不知如何用


引用楼主 fujianianhua 的回复:
我在开发的过程中需要使用Java的Runtime.getRuntime().exec()的方法执行一些windows程序主要是.EXE程序。但又得保证这些.exe程序……
[/Quote]我顶
土匪八号 2011-07-26
  • 打赏
  • 举报
回复
有的好像用的是在java.policy中增加 permission java.io.FilePermission "exe_path", "execute"; 不知如何用
[Quote=引用楼主 fujianianhua 的回复:]
我在开发的过程中需要使用Java的Runtime.getRuntime().exec()的方法执行一些windows程序主要是.EXE程序。但又得保证这些.exe程序是安全的,将例如关机操作等不安全操作给阻止掉。网上搜了很多资料有的说用checkExec();但我不知道如何使用
[/Quote]

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧