Question

Je construis une application Cocoa qui modifie un fichier sur le système d'exploitation de l'utilisateur qui demande l'autorisation d'administrateur. J'ai une preuve de concept de travail qui utilise authopen mais il ne fournit pas l'expérience UX j'espère réaliser. Chaque fois que le fichier est modifié, il invite l'utilisateur à entrer son mot de passe. Est-il possible d'avoir des autorisations accordées à l'application pendant toute la durée de sa vie?

Objectif: L'application demande à l'utilisateur un mot de passe une fois jamais , va application ci ne soulève pas de mot de passe.

Next Best: L'application demande à l'utilisateur un mot de passe une fois au lancement de l'application , va l'application quatrième Ne demande pas le mot de passe jusqu'au redémarrage de l'application.

Je suis au courant des services d'autorisation et la possibilité de créer un Daemon qui traite spécifiquement de la modification des fichiers privilégiés, ce que je suis curieux de savoir si l'un de mes objectifs énumérés sont même possible avant de plonger trop profondément dans un autre système.

apprécie vraiment des suggestions, des critiques ou des liens utiles.

Cordialement, Dustin

Était-ce utile?

La solution

Oui, l'utilisation des services d'autorisation est la voie à suivre. Vous obtenez un AuthorizationRef dans votre application via AuthorizationCopyRights () (qui montre l'interface utilisateur si nécessaire), et passez ceci à votre aide (par l'emballage vers le haut en une forme externe) qui vérifie qu'elle a effectivement obtenu le droit nécessaire avant d'effectuer la tâche privilégiée . Autorisation Services est en mesure d'enregistrer les droits dans la base de données /etc/authorization, donc si vous choisissez une coutume vous pouvez choisir les paramètres à droite par défaut qui est autorisé à acquérir, ce délai d'attente ou d'autres conditions existent et ainsi de suite.

Pour déployer votre outil d'aide privilégié, vous devez utiliser le cadre de gestion des services, en particulier SMJobBless() qui vérifie que les identités de signature de code sur votre correspondance client et aide avant de déployer l'aide comme un travail de launchd. Ensuite, votre aide peut être initiée à la demande par l'application principale.

Ne hésitez pas à demander si vous voulez des précisions sur une étape dans la réponse, mais je l'ai déjà écrit au sujet de ces deux aspects de la séparation des privilèges dans mon livre sécurité des applications Cocoa Professional pour se sentir libre d'acheter une copie ou deux; -).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top