升级到Mac应用程序中的管理员权限

Luk*_*m74 6 macos rights authorization admin objective-c

我正在创建一个简单的应用程序,让您快速输入要运行的shell命令.它工作得很好,但是存在sudo命令的问题.目前,它检测到一个sudo命令,然后我尝试让它为用户的密码启动一个授权窗口,就像你在安装程序中看到的那样.

这是代码一旦检测到它是一个sudo命令:

SFAuthorization *authorization = [[SFAuthorization alloc] initWithFlags:kAuthorizationFlagPreAuthorize rights:NULL environment:kAuthorizationEmptyEnvironment];
if ([authorization obtainWithRight:"com.mycompany.myapplication" flags:kAuthorizationFlagPreAuthorize error:nil]){
    //authorized, now run the command using NSTask.
}else{
    //fail
}
Run Code Online (Sandbox Code Playgroud)

现在,据我所知,这完全是错误的.这正是我从文档中拼凑而成的内容.有任何想法吗?

bbu*_*bum 1

安全很难。我可以解释文档并提供代码片段,但我可能是错的。更糟糕的是,即使我的高级描述是正确的,代码片段中很可能存在一个会破坏安全性的小错误。

如果您要搞乱权限升级,最好的方法是阅读文档并使用提供的示例。

https://developer.apple.com/mac/library/documentation/Security/Conceptual/authorization_concepts/01introduction/introduction.html#//apple_ref/doc/uid/TP30000995-CH204-TP1