Exécuter des tâches en roots mais sans s'authentifier à  chaque fois

iNathiNath Membre
Bonjour :) ,

j'ai une application démon (ou Agent) qui se lance à  l'ouverture de ma session et j'aimerai que celle-ci lance un exécutable en root à  chaque ouverture de session.
Le problème c'est que le mot de passe administrateur sera demandé à  chaque fois, et ça ça m'ennuie vraiment.

Est-il possible d'enregistrer une authentification une fois pour toute ?

J'ai déjà  réussi à  réussi à  exécuter un exécutable avec AuthorizationExecuteWithPrivileges() mais l'authentification n'est valide que jusqu'à  la fermeture de mon application.

Merci à  vous!  o:)

Réponses

  • chkdskschkdsks Membre
    février 2011 modifié #2
    As tu essayé de faire une application AppleScript ? un script shell dans Automator ?
  • tabliertablier Membre
    février 2011 modifié #3
    AppleScript parait être une bonne idée, sauf qu'AppleScript connait aussi les privilèges:
    do shell script "..." with privilege
    je ne me souviens plus de la syntaxe exacte!  Mais quand les privilèges sont ouverts, AppleScript envoie la commande sous forme d'AppleEvent codé 'syso','exec'. Donc, tu pourrais essayer d'écrire un AEvent pour faire ce que tu souhaites. Ci joint un exemple qui fait exécuter une commande système (ls, pwd, ibtool ...).
    bon = [commande getBytes:commnd maxLength:1022 usedLength:&amp;compte encoding:NSUnicodeStringEncoding <br />		options:NSStringEncodingConversionAllowLossy range:(NSRange){0, [commande length]} remainingRange:NULL] ;				<br />err = AEBuildAppleEvent(&#39;syso&#39;,&#39;exec&#39;, typeProcessSerialNumber, &amp;locProcess, sizeof(locProcess),&nbsp; <br />			kAutoGenerateReturnID, kAnyTransactionID, &amp;toolEvent, NULL, &quot;&#39;----&#39;:utxt(@)&quot;, compte, commnd )&nbsp; ;<br />
    
    command contient le texte de la commande, locProcess contient le N° de process de l'application destinataire et bien sur, il faudra traiter la réponse.
    Nota: si ça marche, j'aimerais bien le savoir.
  • iNathiNath Membre
    22:45 modifié #4
    Désolé du temps de réponse mais je n'ai pas eu le temps de m'en occuper.

    J'aimerai bien tester ton code tablier mais je ne comprends pas bien son fonctionnement :s

    Comment obtenir le locProcess ? Est-ce le pid du processus qui doit exécuter des commandes en tant qu'administrateur ?
    Idem pour "compte", qu'est ce que c'est ? Et "'----':utxt(@)"; ?
    Désolé mais même en cherchant dans la doc je n'ai pas compris. :o

    Ensuite tu dis "quand les privilèges sont ouverts", mais moi justement ils ne seront pas ouvert dans mon cas.

    Et pour le script
    do shell script "..." with privilege

    le script ne me demandera pas le mot de passe ?
    J'ai essayé dans Automator de créer un script shell mais je n'ai pas l'impression que celui-ci s'exécute en tant qu'administrateur...

    Voilà , si je pouvais avoir quelques explications en plus ça serait sympa :)

    Merci ! :D

    PS: je n'avais pas précisé mais je suis relativement débutant...
Connectez-vous ou Inscrivez-vous pour répondre.