我想创建使用管理员密码在 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);
完成此步骤后有办法获取密码吗?
或者这一切都是错误的 - 并且以另一种方式存在?
谢谢!
最佳答案
您无法(也不应该)获得实际密码。操作系统甚至不知道它是什么。这是故意的。正如您所注意到的,您应该创建一个小型帮助程序,您可以升级其权限。
如果可能的话,您应该完全避免使用 shell。它非常脆弱。最好编写一个纯 C/ObjC 程序来执行您想要的操作并提升其权限。
关于MacOS - 获取管理员密码的合法方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11432396/