Swift OS X root授权

时间:2016-07-13 09:09:00

标签: swift macos shell security authentication

我正在编写OS X应用程序,它需要异步运行不同线程中的大量shell脚本,并且每个脚本都需要以root用户身份运行,因此我找到了一个常见问题的唯一完整解决方案(使用AppleScript)完全不适合我。此刻,我正在运行它们:

func runCommand(command cmd : String) -> String {
    var result = ""

    let task = NSTask()
    task.launchPath = "/bin/bash"
    task.arguments = (["-c", cmd])
    task.currentDirectoryPath = "~/"

    let pipe = NSPipe()
    task.standardOutput = pipe
    task.standardError = pipe
    let handle = pipe.fileHandleForReading
    task.launch()

    let data = NSMutableData()

    while task.running {
        data.appendData(handle.availableData)
    }
    result = String(data: data, encoding: NSUTF8StringEncoding)!

    if !result.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet()).isEmpty {
        print("Output for \(cmd) : \(result)")
    }

    return result
}

该命令看起来像"\(askpass) sudo -Ak true",其中askpass是包含密码的文件,这是一个很大的安全漏洞。所以,问题是:如何让Swift OS X应用程序以root身份运行?

0 个答案:

没有答案