我想创建使用管理员密码在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);


完成此步骤后,是否可以获取密码?

还是所有这些错误-并存在另一种方式?

谢谢!

最佳答案

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

如果可能的话,应该完全避免使用该外壳。这是非常脆弱的。最好编写一个纯粹的C / ObjC程序来执行您想要的事情并提升其特权。

09-11 19:17
查看更多