0

管理者パスワードを使用して bash でいくつかのスクリプトを実行するアプリケーションを作成したいと考えています。例えば:

 echo **pass** | sudo -S reboot

それを得る最良の方法は何ですか。

私はこのチュートリアルを見て、私が理解したことのすべて - それは認証ウィンドウを実行する方法です。

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

この手順の後にパスワードを取得する方法はありますか?

それともすべてが間違っていて、別の方法で存在しているのでしょうか?

ありがとう!

4

1 に答える 1

3

実際のパスワードを取得することはできません (取得すべきではありません)。OSはそれが何であるかさえ知りません。これはわざとです。お気づきのように、特権をエスカレートできる小さなヘルパー プログラムを作成する必要があります。

可能であれば、シェルを完全に避ける必要があります。それは非常に壊れやすいです。必要なことだけを実行し、その権限を昇格する純粋な C/ObjC プログラムを作成する方がはるかに優れています。

于 2012-07-11T14:48:46.900 に答える