是否有任何图形“命令”的Mac OS X?(Is there any graphical “sudo

2019-07-20 20:03发布

我设计在Java中的小软件。 我不知道术语/定义,我在做什么,但我从Java提示命令到终端。 事情是这样的:

Process process = Runtime.getRuntime().exec("command");

我在Linux之前已经这样做了,我用gksudo为所需的root密码的命令。

是否有任何gksudo在OS X? 任何图形弹出询问root密码?

Answer 1:

您可以更矿石较少的管理与一个AppleScript shell脚本编写您自己:

#!/bin/sh
osascript -e "do shell script \"$*\" with administrator privileges"

cocoasudo看起来更美观悦目,但是这已经部署。



Answer 2:

这也看起来很有希望: cocoasudo

它采用OSX本地授权服务API:

对于基于Cocoa的Mac OS X程序,不存在通过授权服务API提供analagous能力须藤。 该API的使用允许你以提示请求升级权限的能力,用户的用户名和密码。

...

对于这种情况,我写了一个小工具,我已经被称为cocoasudo。 在很多使用cocoasudo你使用sudo以同样的方式。 然而,而不是提示用户输入他们在终端窗口的密码,他们会得到通过授权服务API一个对话框提示。



Answer 3:

我发现,如果你正在运行的调用其他命令的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"


Answer 4:

使遵循,在这个例子中,我去创建一个文件夹在/ var /锁并设置权限为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();
}

在Linux上也许可以与gksudo做,但我没有测试它,我去测试,在这里发表后的结果。



Answer 5:

gksudo是的GTK +版本sudo

您可以使用此克隆,特别是对于它的OS X.



Answer 6:

继ZJR的答案 ,我做了这个到Automator的,所以你可以使用它作为一个服务或什么:

on run {input, parameters}
    do shell script "sudo open \"" & (POSIX path of input as string) & "\"" with administrator privileges

    return input
end run

或者,也许你只是觉得他的回答是过时的,还是要一个AppleScript,只是写在脚本编辑器这个单行:

do shell script "[[your command]]" with administrator privileges

然后你就可以做成一个应用程序 ,并把它作为一个服务或什么的。



Answer 7:

每个人都应该使用,而不是看须藤和/或图形界面给它的本地OS X授权服务。

参考:

  • 简介授权服务编程指南(苹果)

  • 授权服务任务(苹果)

[我知道这是一个迟到的回答...]



Answer 8:

似乎有很多在这些答案错误的信息。 为了节省其他人一段时间,我发表我自己的调查结果:

首先,像问题的海报,我也有我需要从一个Java应用程序提升权限的情况。

我已经分手这件事成两个脚本。 第一个脚本是由Java的一些命令行参数来执行。 第二个脚本执行需要root权限的所有步骤。 这个想法当然是使用cocoasudo在第一个脚本以root权限执行第二脚本。

我已经通过广泛的日志记录确认为单独的文件,该脚本的确做什么,我打算。 手动启动时(当然,普通用户权限)在命令行中,他们工作得很好。

当从Java应用程序启动,我得到了cocoasudo提示,但没有任何反应。 甚至会出现从第二个脚本输出不是第一个记录。

当我改变了第一个脚本使用osascript,再次确认无误后尽可能的脚本去,我甚至不得到提示,当它从内运行的Java。

这是所有的OS X山狮。 至于苹果是否建立防止脚本时的一些安全卫士正在以root权限从Java内部执行。

由于cocoasudo本身的实际运行,我倾向于认为,解决办法是类似的代码cocoasudo的东西,但在执行使用可可API调用所需的行动所有的休息。 那么这可能是代码签名也是如此。



Answer 9:

如果您使用的是终端,那么就使用“ sudo ”,而不是,这会为用户在终端本身提示输入密码(与gksudo我相信使用图形弹出)。 须藤适用于Linux和OS X.



文章来源: Is there any graphical “sudo” for Mac OS X?