Mac OS X有任何图形"sudo"吗?

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 看起来更美观,但已经部署了.

  • 有没有办法记住通话之间输入的密码?我需要连续几次调用这样的脚本,并且不希望要求用户多次输入他们的密码. (2认同)

小智 8

这也很有希望: cocoasudo

在此输入图像描述

它使用OSX本机授权服务API:

对于基于Mac OS X Cocoa的应用程序,可以通过Authorization Services API提供sudo的附带功能.使用API​​可以提示用户输入用户名和密码,以请求升级权限.

...

对于那种情况,我写了一个小实用程序,我称之为cocoasudo.使用cocoasudo的方式与使用sudo的方式大致相同.但是,不会在终端窗口中提示用户输入密码,而是通过Authorization Services API获取对话框提示.


小智 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)

  • 惊人的。唯一的缺点是对话框显示“osascript 想要进行更改”,这可能会让用户感到困惑,因为她可能不知道 osascript 是什么。 (2认同)

ade*_*190 6

进行以下操作,在本例中我创建一个文件夹 /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 上运行。