MacOS - 获取管理员密码的合法方法

标签 macos cocoa security xcode4

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

相关文章:

objective-c - 多态性和 Cocoa NSViews + 绑定(bind)

security - 将 SSL 传输到同一域 IIS7 的新服务器

php - 良好的 Php 框架,具有强大的安全性

iphone - 分析Cocoa程序的程序布局和存储建议

bash - -bash : rabbitmq-server: command not found

objective-c - 如何清除 Objective-C 中的控制台

cocoa - 像 iAd 制作者一样的图形 View

security - Tsung 安全 Websocket 支持

python - 为什么我用setup.py安装ansible找不到?

macos - 如何在 NSImage 周围绘制彩色边框?