如何仅使用Java挂载设备?

时间:2019-04-26 16:28:06

标签: java linux mount

好的,我意识到这可能是不可能的...

我有一个运行linux的设备,它可能没有可见的用户界面。它将有一个打开的USB端口...我希望能够编写java,以允许整个系统检测何时将设备插入USB端口,然后安装该设备。

我知道如何从命令行执行此操作,但是需要“ sudo”派生具有提升特权的新进程来执行任务。我不知道如何编写一个可以绕过mount的安全保护的Java程序。

runtime.exec()并没有真正完成我希望完成的工作。这是“用Java无法完成”的问题吗?

我希望做到这一点而无需借助外部可执行代码。

2 个答案:

答案 0 :(得分:1)

您无法绕过mount的安全保护。保护未安装。保护位于内核中。

如果偶然发现并发布了一种方法,它将被删除。

如果您对运行的操作系统有控制权,则可以将选项用户添加到/ etc / fstab中的安装点。这样做之后,“ mount / path”和“ umount / path”可以从runtime.exec()开始工作,而不会升高。 mountumount是setuid-root,以允许它工作。

答案 1 :(得分:0)

文件挂载由主机操作系统控制。因此,控制装载是通过系统调用完成的。您似乎正在使用Unix操作系统,这意味着系统调用接口是C。因此,您可以使用JNI调用一个小的C函数,从而需要进行系统调用。

但是所有这些问题都是系统相关的,并且是特权操作。因此,这种方法会带来可移植性和安全性问题。因此,您最好重新考虑程序自身为何必须执行此操作,而不是让控制组件(例如systemd)为您完成操作。