Étant donné qu'il ya un fichier appelé copystuff dans le dossier des ressources dans un un projet Xcode, et ce fichier se lit comme suit:Exécuter un script Bash en tant que root avec Objective-C/Cocoa
#!/bin/sh
cp -R /Users/someuser/Documents /Users/admin/Desktop
Et si ce bit de le code ci-dessous est lié à un bouton dans IB ... il copiera le répertoire/Users/someuser/Documents vers/Users/admin lorsque le bouton est enfoncé dans une application Cocoa ... Il fonctionne quand l'application est lancée dans un compte administrateur (en utilisant OS X 10.5.x ici) ...
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/sh"];
[task setArguments:[NSArray arrayWithObjects:[[NSBundle mainBundle]
pathForResource:@"copystuff" ofType:@"sh"], nil]];
[task launch];
Ma question est .. est-il un moyen d'avoir NSTask exécuter un script en cours d'exécution en tant que r oot alors que ce code est appelé depuis un compte non administrateur? Ou a-t-on demandé d'une autre façon.Can Objective-C peut être codé pour exécuter des scripts à partir de say/usr/bin en tant que root à partir d'un compte non administrateur?
C'est à peu près exactement ce que j'essaie de faire ... Pour être moins énigmatique, j'ai 3 comptes sur une image OS 10.5 déployée dans un cadre éducatif. (administrateur, enseignant, étudiant). Les comptes d'enseignant et d'étudiant ne sont pas des administrateurs. Sur une demande, j'essaie d'autoriser le compte d'enseignant non administrateur à copier des éléments du compte d'étudiant sur le bureau du professeur. L'application fonctionne avec succès depuis le compte admin, mais Je veux pouvoir donner à l'enseignant certaines de ces actions prvileged sans leur donner le mot de passe d'admin .... – cit
Vous pourriez avoir plus de chance regardant dans des options d'autorisations plus sophistiquées, comme des listes de contrôle d'accès: http://aplawrence.com/ MacOSX/acl.html –