0

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

 echo **pass** | sudo -S reboot

获得它的最佳方法是什么。

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

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);

有没有办法在此步骤后获取密码?

或者所有这些都是错误的——并且以另一种方式存在?

谢谢!

4

1 回答 1

3

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

如果可能的话,您应该完全避免使用外壳。它非常脆弱。编写一个纯粹的 C/ObjC 程序来做你想做的事并提升它的权限要好得多。

于 2012-07-11T14:48:46.900 回答