我想创建使用管理员密码的应用程序来在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);
在这个步骤之后有办法获取密码吗?
或者所有这些错误 - 并以另一种方式存在?
谢谢!
答案 0 :(得分:3)
您不能(也不应该)获取实际密码。操作系统甚至不知道它是什么。这是故意的。如您所知,您应该创建一个小帮助程序,您可以升级其权限。
如果可能的话,你应该完全避开shell。它非常脆弱。编写纯粹的C / ObjC程序会更好,它可以完成您想要的任务并提升其权限。