Joh*_*nes 24 macos shell privileges sudo gksudo
我正在用Java设计一个小软件.我不知道我正在做什么的术语/定义,但我提示从Java到终端的命令.像这样的东西:
Process process = Runtime.getRuntime().exec("command");
Run Code Online (Sandbox Code Playgroud)
我以前在Linux中做过这个,我用过gksudo需要root密码的命令.
gksudoOS X中有没有?任何要求root密码的图形弹出窗口?
ZJR*_*ZJR 19
您可以使用AppleScript shell脚本编写更多自己编写的内容:
#!/bin/sh
osascript -e "do shell script \"$*\" with administrator privileges"
Run Code Online (Sandbox Code Playgroud)
cocoasudo 看起来更美观,但已经部署了.
小智 6
我发现,如果您正在运行调用其他命令的shell脚本,则cocoasudo无法正常工作。您还必须在所有子命令中使用cocoasudo,这也会为每个调用弹出提示。
osascript解决方案似乎更好地工作,但是我需要对其进行调整以使其与包含空格的路径的命令一起使用。
#!/bin/sh
export bar=""
for i in "$@"; do export bar="$bar '${i}'";done
osascript -e "do shell script \"$bar\" with administrator privileges"
Run Code Online (Sandbox Code Playgroud)
进行以下操作,在本例中我创建一个文件夹 /var/lock 并将权限设置为 777:
String[] command = {
"osascript",
"-e",
"do shell script \"mkdir -p /var/lock && chmod 777 /var/lock\" with administrator privileges" };
Runtime runtime = Runtime.getRuntime();
try {
Process process = runtime.exec(command);
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null)
System.out.println(line);
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
在 Linux 上也许你可以用 gksudo 来做这个,但我没有测试它,在我去测试并在这里发布结果之后。
Ada*_*kin -5
如果您使用的是终端,则只需使用“ sudo”,这将在终端本身中提示输入用户密码(而不是gksudo我认为使用图形弹出窗口)。Sudo 可在 Linux 和 OS X 上运行。