好的,我意识到这可能是不可能的...
我有一个运行linux的设备,它可能没有可见的用户界面。它将有一个打开的USB端口...我希望能够编写java,以允许整个系统检测何时将设备插入USB端口,然后安装该设备。
我知道如何从命令行执行此操作,但是需要“ sudo”派生具有提升特权的新进程来执行任务。我不知道如何编写一个可以绕过mount的安全保护的Java程序。
runtime.exec()并没有真正完成我希望完成的工作。这是“用Java无法完成”的问题吗?
我希望做到这一点而无需借助外部可执行代码。
答案 0 :(得分:1)
您无法绕过mount的安全保护。保护未安装。保护位于内核中。
如果偶然发现并发布了一种方法,它将被删除。
如果您对运行的操作系统有控制权,则可以将选项用户添加到/ etc / fstab中的安装点。这样做之后,“ mount / path”和“ umount / path”可以从runtime.exec()
开始工作,而不会升高。 mount
和umount
是setuid-root,以允许它工作。
答案 1 :(得分:0)
文件挂载由主机操作系统控制。因此,控制装载是通过系统调用完成的。您似乎正在使用Unix操作系统,这意味着系统调用接口是C。因此,您可以使用JNI调用一个小的C函数,从而需要进行系统调用。
但是所有这些问题都是系统相关的,并且是特权操作。因此,这种方法会带来可移植性和安全性问题。因此,您最好重新考虑程序自身为何必须执行此操作,而不是让控制组件(例如systemd
)为您完成操作。