Quelle est la bonne façon d'exécuter quelque chose comme $sudo touch folder_name
ou $sudo rm
dans Objective-C/Cocoa? Je suis en train de changer et de déplacer quelques fichiers et j'ai besoin de privilèges élevés. Tout échantillon de code serait grandement apprécié. Merci.Utiliser les commandes sudo dans Cocoa et Objective-C?
Répondre
Une façon de le faire est AuthorizationExecuteWithPrivileges()
, mais cela est déconseillé pour le cours normal des choses. Principalement c'est pour les installateurs, je suppose.
Quelque chose comme:
AuthorizationRef auth = NULL;
OSStatus err = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagInteractionAllowed, &auth);
err = AuthorizationExecuteWithPrivileges(auth, command, kAuthorizationFlagDefaults, args, NULL);
Et vous ajoutez un contrôle approprié de err
...
Voir la documentation Authorization.
Il y a plusieurs façons de procéder. Lequel vous choisissez dépend de ce que vous voulez faire. La manière la plus simple et la moins sûre consiste à définir simplement le bit s sur un outil d'aide supplémentaire que vous appelez à partir de votre code et qui fait ce qui nécessite des droits d'administrateur. Jetez un oeil à la BetterAuthorizationSample pour la manière la plus sophistiquée et compliquée d'exécuter du code privilégié. Le Authorization Services Programming Guide vous donne tout ce dont vous avez besoin.
" Le moyen le plus simple et le moins sûr est de définir simplement le s-bit sur un outil auxiliaire que vous appelez de votre code et qui nécessite des droits d'administrateur. "C'est en fait ce que recommande Apple. Vous êtes supposé utiliser 'AuthorizationExecuteWithPrivileges' uniquement pour conférer le bit setuid à l'outil auxiliaire. L'idée est de confiner les pouvoirs root uniquement au code qui a besoin de pouvoirs (l'outil d'aide spécifique à la tâche), afin que le code qui n'a pas besoin de pouvoirs (votre application) n'en possède pas. C'est le principe du moindre privilège. –
- 1. Cocoa Touch - Commandes segmentées
- 2. Créer un cercle/une bulle de couleur par programmation dans ObjectiveC et Cocoa
- 3. Comment utiliser SSH et SUDO avec CLOCHARD dans Emacs
- 4. Dans mon virtualenv, j'ai besoin d'utiliser sudo pour toutes les commandes
- 5. Analyseur AMF0 dans ObjectiveC
- 6. Comment utiliser les commandes d'amorçage et de configuration dans Ubuntu?
- 7. alloca et ObjectiveC Garbage Collector
- 8. Darwin et ObjectiveC - Comment appeler des scripts shell à partir d'une application Cocoa?
- 9. su et sudo dans un script shell
- 10. Comment savoir quand les commandes Cocoa MainMenu ont été chargées
- 11. Personnalisation de writeToFile dans ObjectiveC
- 12. Reliure ObjectiveC classe C# problème
- 13. Comment identifier et utiliser OSType à Cocoa
- 14. Comment utiliser les commandes FlexUnit Test Parsley?
- 15. NSString question ObjectiveC
- 16. Dans Mac OSX 10.5, il ne trouve pas mes commandes Terminal sudo, find, etc
- 17. Comment utiliser Regexp dans MySQL Remplacer les commandes?
- 18. Combine chaîne en ObjectiveC
- 19. Comment résoudre les fuites dans le code suivant? ObjectiveC
- 20. PHP: Utiliser les sous-commandes SVN et les options dans exec() provoque une "erreur de segmentation"?
- 21. utiliser les commandes cmd dans le programme java
- 22. MVC utilisé dans la programmation ObjectiveC
- 23. Utiliser une localisation spécifique dans l'application Cocoa
- 24. Aider avec le code GCC et ObjectiveC et Cygwin
- 25. Chargement d'une séquence d'images dans InterfaceBuilder -ObjectiveC
- 26. Démarrage et arrêt d'Apache avec sudo
- 27. Equivalent Sudo pour les profils utilisateur Django
- 28. Chiffrer les ressources dans l'application Cocoa?
- 29. Cocoa: Utilisation de commandes UNIX pour écrire un fichier
- 30. Différence entre les opérations et les threads dans Cocoa
Pourquoi voulez-vous 'sudo' dans l'iPhone? – kennytm
désolé mon esprit était errant. J'ai remplacé le tag par "mac". – Jeff