加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用Java分叉特权

发布时间:2020-12-15 08:38:34 所属栏目:Java 来源:网络整理
导读:我正在用 Java编写一个服务器程序,允许用户使用DRMAA提交作业.虽然主服务器进程以root身份运行,但它所做的只是对用户进行身份验证,然后启动另一个以该用户身份运行的Java程序,并实际完成工作以符合最小化权限的原则.最初,我使用Runtime.exec()和sudo(下面的
我正在用 Java编写一个服务器程序,允许用户使用DRMAA提交作业.虽然主服务器进程以root身份运行,但它所做的只是对用户进行身份验证,然后启动另一个以该用户身份运行的Java程序,并实际完成工作以符合最小化权限的原则.最初,我使用Runtime.exec()和sudo(下面的例子)这样做,这个工作正常,直到进程被篡改,此时sudo因为没有终端而感到沮丧.

String[] command = {"sudo","-i","-u",username,java,theOtherJavaProgram};
Runtime.getRuntime().exec(command,null,getHomeDirectory(username));

在作为守护进程运行时,在Java中执行此分叉特权模式的最佳方法是什么?有办法吗?我是否必须打破C并学习如何使用JNI创建JVM?

解决方法

你可以用su(1)代替sudo(8). su(1)参与程度较低,可能不会想要终端本身. (当然,如果您的PAM配置需要su(1)的终端输入,那么这可能也不会很好.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读