MacOS - 获取管理员密码的合法方式

时间:2012-07-11 12:11:42

标签: macos cocoa security xcode4

我想创建使用管理员密码的应用程序来在bash中运行一些脚本。例如:

 echo **pass** | sudo -S reboot

获得它的最佳途径是什么。

我看了this教程,以及我理解的所有内容 - 它是如何运行授权窗口。

AuthorizationRef authRef= NULL;
AuthorizationItem right = { "com.my.app", 0, NULL, 0 };
AuthorizationRights rightSet = { 1, &right };
OSStatus status;

if (AuthorizationCreate(
                        NULL, 
                        kAuthorizationEmptyEnvironment,
                        kAuthorizationFlagDefaults, 
                        &authRef) != errAuthorizationSuccess)
{
    NSLog(@"Could not create authorization reference object.");
}

status = AuthorizationCopyRights(authRef, &rightSet, kAuthorizationEmptyEnvironment, 
                                 kAuthorizationFlagDefaults |
                                 kAuthorizationFlagPreAuthorize |
                                 kAuthorizationFlagInteractionAllowed | 
                                 kAuthorizationFlagExtendRights,
                                 NULL);

在这个步骤之后有办法获取密码吗?

或者所有这些错误 - 并以另一种方式存在?

谢谢!

1 个答案:

答案 0 :(得分:3)

您不能(也不应该)获取实际密码。操作系统甚至不知道它是什么。这是故意的。如您所知,您应该创建一个小帮助程序,您可以升级其权限。

如果可能的话,你应该完全避开shell。它非常脆弱。编写纯粹的C / ObjC程序会更好,它可以完成您想要的任务并提升其权限。