2012-07-11 1 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

+0

제대로 이해하고 있습니까? 쉘에서 몇 가지 명령을 실행하려면 두 번째 응용 프로그램을 만들어야하며, 그렇게 할 것입니다. 첫 번째 응용 프로그램은 권한 API를 통해 두 번째 응용 프로그램을 호출해야합니다. 이 경우 명령은 관리자 권한으로 실행됩니다. – kaa

답변

3

실제 비밀번호를 가져올 수 없으며 가져올 수 없습니다. OS는 그것이 무엇인지조차 모릅니다. 이것은 의도적입니다. 당신이 권한을 위임 할 수있는 작은 도우미 프로그램을 만들어야합니다.

가능한 한 쉘을 완전히 피해야합니다. 그것은 매우 연약합니다. 원하는 C/ObjC 프로그램을 작성하여 권한을 높이는 것이 훨씬 낫습니다.

관련 문제