如何使用java挂载设备?

问题描述 投票:0回答:2

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

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

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

runtime.exec()并没有真正做我希望完成的事情。这是一个“无法在Java中完成”的问题吗?

我希望不借助外部可执行代码来做到这一点。

java linux mount
2个回答
1
投票

你无法绕过mount的安全保护。保护不是挂载。保护在内核中。

如果您偶然发现并发布它,它将被删除。

如果您可以控制正在运行的操作系统,则可以将选项user添加到/ etc / fstab中的mountpoint。在这样做之后,“mount / path”和“umount / path”在没有提升的情况下从runtime.exec()工作。 mountumount是setuid-root以允许它工作。


0
投票

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

但所有这些问题都取决于系统和特权操作。因此,该方法会产生可移植性和安全性问题。所以你可能会更好地重新考虑为什么你的程序本身必须这样做,而不是让控制组件(如systemd)为你做。

© www.soinside.com 2019 - 2024. All rights reserved.