如何仅使用 java 来挂载设备?
How can you mount a device using just java?
好吧,我意识到这可能是不可能的...
我有一台运行 linux 的设备,它可能没有可见的用户界面。它将有一个打开的USB端口...我希望能够编写java以允许整个系统检测何时将设备插入USB端口然后挂载设备。
我知道如何从命令行执行此操作,但它需要 "sudo" 派生一个具有更高权限的新进程来执行该任务。我不知道如何写一个java程序可以绕过(是的,我想绕过)mount的安全保护。
runtime.exec() 并没有真正做到我希望完成的事情。这是 "can't be done in Java" 问题吗?
我希望在不求助于外部可执行代码的情况下做到这一点。
绕不开mount的安全保护。保护不在安装中。保护在内核中。
如果您偶然找到一种方法并发布它,它将被删除。
如果您可以控制您 运行 所在的 OS,则可以将选项 user 添加到 /etc/fstab 中的挂载点。这样做之后,"mount /path" 和 "umount /path" 从 runtime.exec()
开始工作,没有提升。 mount
和 umount
是 setuid-root 以允许它工作。
文件装载由主机操作系统控制。所以控制挂载是通过系统调用来完成的。您似乎使用的是Unix操作系统,这意味着系统调用接口是C。因此您可以使用JNI调用一个小的C函数来进行系统调用。
但是所有这些事情都是系统相关的,并且是特权操作。因此,这种方法会产生可移植性和安全性问题。所以你最好重新考虑为什么你的程序 自己 必须这样做,而不是让控制组件(例如 systemd
)为你做。
好吧,我意识到这可能是不可能的...
我有一台运行 linux 的设备,它可能没有可见的用户界面。它将有一个打开的USB端口...我希望能够编写java以允许整个系统检测何时将设备插入USB端口然后挂载设备。
我知道如何从命令行执行此操作,但它需要 "sudo" 派生一个具有更高权限的新进程来执行该任务。我不知道如何写一个java程序可以绕过(是的,我想绕过)mount的安全保护。
runtime.exec() 并没有真正做到我希望完成的事情。这是 "can't be done in Java" 问题吗?
我希望在不求助于外部可执行代码的情况下做到这一点。
绕不开mount的安全保护。保护不在安装中。保护在内核中。
如果您偶然找到一种方法并发布它,它将被删除。
如果您可以控制您 运行 所在的 OS,则可以将选项 user 添加到 /etc/fstab 中的挂载点。这样做之后,"mount /path" 和 "umount /path" 从 runtime.exec()
开始工作,没有提升。 mount
和 umount
是 setuid-root 以允许它工作。
文件装载由主机操作系统控制。所以控制挂载是通过系统调用来完成的。您似乎使用的是Unix操作系统,这意味着系统调用接口是C。因此您可以使用JNI调用一个小的C函数来进行系统调用。
但是所有这些事情都是系统相关的,并且是特权操作。因此,这种方法会产生可移植性和安全性问题。所以你最好重新考虑为什么你的程序 自己 必须这样做,而不是让控制组件(例如 systemd
)为你做。