2012-07-11 30 views
0

我想創建使用管理員密碼在bash中運行某些腳本的應用程序。例如:MacOS - 獲取管理員密碼的合法方式

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); 

有沒有一種方法可以在此步驟後獲取密碼?

或所有這些錯誤 - 並存在另一種方式?

謝謝!

+5

不,當然授權API不會給你用戶的密碼。這將是非常愚蠢的。 – geoffspear 2012-07-11 12:15:23

+0

我是否理解正確 - 在shell中執行一些命令我應該創建第二個應用程序,它會這樣做,而我的第一個應用程序應該調用具有權限的第二個應用程序,它是從授權API獲得的?在這種情況下,命令將從管理員權限執行? – kaa 2012-07-11 13:52:03

回答

3

你不能(也不應該)得到實際的密碼。操作系統甚至不知道它是什麼。這是有意的。正如你注意到的,你應該創建一個小幫手程序,它的權限可以升級。

如果可能,你應該完全避開殼。這是非常脆弱的。編寫一個純粹的C/ObjC程序會更好,它可以完成你想要的任務並提升它的權限。