gpt4 book ai didi

java - Java Runtime.exec 中的 Sudo 和 gksu 用于 umount

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:24 26 4
gpt4 key购买 nike

我正在编写一个Java应用程序,其中(除其他外)我将安装外部设备,进行一些复制,然后卸载它。

//I am mounting several devices in created dirs named sdb, sdc... according to the partitions
String[] command = {"gksu", "mount", "/dev/sd" + letter + "1", "mounter/sd" + letter};
Runtime.getRuntime().exec(command);

这在终端和我的程序中都运行良好。

为了更快地卸载,我考虑使用 umount -agksu umount -a 在终端中不起作用,因此在 Java 程序中也不起作用。 sudo umount -a 可以在终端中工作,但不能在应用程序中工作。与此同时,我通过一一卸载设备来让它工作,但如果我能让 umount -a 以某种方式工作,它会更干净。

如果您了解为什么 gksu 不能与 umount 一起使用或 sudo 不能与 Runtime.exec() 一起使用,我会接受您的解释。

谢谢

最佳答案

I feel the problem is sudo not asking me for a password, as gksu does. But I don't know how to give it a password.

情况很可能是这样。这里有几种不同的可能情况,我认为每种情况都有自己的解决方案:

  1. 运行程序的用户(在桌面应用程序的情况下)已经有权运行您需要的命令。 - 提示用户输入密码并使用 -s 标志通过 stdin 将其传递给 sudo。 Check out the sudo man page for more 。这很简单,并确保您的应用程序没有比运行它的用户更大的访问权限。

  2. 如果您的应用程序需要以与用户不同的权限运行,或者如果它在服务器上运行,则应用程序应以其自己的系统用户身份运行。然后您可以使用 visudo使该系统用户能够仅运行您需要的命令而无需密码。编辑 sudoers 文件时要非常小心。我建议将其添加为单独的文件,然后在实际的 sudoers 中链接到它,以便以后更容易撤消。

关于java - Java Runtime.exec 中的 Sudo 和 gksu 用于 umount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23369169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com