我想创建使用管理员密码在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程序来执行您想要的事情并提升其特权。