【问题标题】:MacOS - legal way to get admin passwordMacOS - 获取管理员密码的合法方式
【发布时间】:2012-07-11 12:11:42
【问题描述】:

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

有没有办法在这些步骤之后获取密码?

或者所有这些都是错误的——并且以另一种方式存在?

谢谢!

【问题讨论】:

  • 不,当然授权 API 不会给你用户密码。那将是非常愚蠢的。
  • 我理解正确吗 - 要在 shell 中执行一些命令,我​​应该创建第二个应用程序,它会做到这一点,我的第一个应用程序应该调用第二个应用程序的权限,它是从授权 API 获得的?在这种情况下,命令将从管理员权限执行?

标签: macos cocoa security xcode4


【解决方案1】:

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

如果可能的话,你应该完全避免使用 shell。它非常脆弱。最好编写一个纯 C/ObjC 程序来做你想做的事并提升它的权限。

【讨论】:

    猜你喜欢
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 2016-05-08
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多