2 votes

Automator : Exécuter TextEdit en tant que Root

Plus précisément, je veux simplifier l'édition du fichier hosts, ce qui nécessite des privilèges root.

La commande suivante fonctionne dans le terminal :

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts

D'après ce que j'ai pu apprendre, la commande suivante devrait fonctionner en utilisant Automator :

-- Exécuter un script Apple
on run {input, parameters}
    do shell script ¬
        "/Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts" with administrator privileges   
end run

… la clé étant que with administrator privileges équivaut à sudo et demandera un mot de passe.

Cependant, lorsque j'exécute le script, j'obtiens l'erreur suivante :

La commande s'est terminée en raison de la réception d'un signal.

et ensuite

TextEdit a quitté de façon inattendue.

… ce qui semble être sérieux.

Si j'essaie la même chose avec l'éditeur de texte Atom, cela fonctionne comme prévu.

Comment puis-je faire en sorte que TextEdit s'exécute en tant que root ?

4voto

Charles Srstka Points 326

Sur la version actuelle de macOS (10.12.6 au moment de la rédaction de ceci), cela ne fonctionnera pas non plus depuis le shell :

$ sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit 
Mot de passe :
Instruction illégale : 4

Et si vous consultez les journaux des crashs, vous trouverez le message suivant :

Erreur interne d'inscription du Sandbox : Le message entrant euid:0 ne correspond pas à l'uid secinitd:501.

C'est ainsi que cela a été conçu ; TextEdit est une application sandboxée, et l'exécuter en tant que root déjouerait en grande partie l'objectif de la mise en sandbox. Je ne pense pas que vous pourrez trouver un moyen de le faire fonctionner en tant que root. Ce n'est pas une mauvaise chose, cependant, car exécuter une application GUI en tant que root est généralement une très mauvaise idée d'un point de vue sécurité, car il existe de nombreuses façons d'injecter discrètement du code dans une application Cocoa, et si cette application s'exécute en tant que root, vous pouvez ouvrir des vulnérabilités de sécurité assez sérieuses de cette manière.

Pour éditer des fichiers comme /etc/hosts, je vous recommande de trouver une autre façon de faire :

  1. Utilisez un éditeur en ligne de commande tel que emacs, pico, ou vi.

  2. Utilisez un éditeur de texte basé sur une interface graphique qui a la fonction de demander votre mot de passe administrateur lorsque nécessaire (Je crois que BBEdit peut le faire, par exemple)

  3. Copiez simplement le fichier /etc/hosts dans un autre emplacement, éditez-le là-bas, puis utilisez sudo pour copier le fichier modifié de nouveau dans /etc.

2voto

Tetsujin Points 95239

Pas vraiment une réponse à ce que vous avez demandé, mais en alternative, avez-vous essayé Gas Mask - éditeur de fichiers Hosts gratuit.
Il peut éditer, stocker plusieurs versions et basculer à la volée.

entrer la description de l'image ici

0voto

Scott Points 21

Juste pour boucler la boucle sur cela (car c'était l'un des premiers résultats sur Google).

Voici comment ouvrir n'importe quel fichier

terminal (bash/zsh):

sudo open /Applications/Developers\ Tools/Sublime\ Text.app /etc/hosts
sudo open "/Applications/Developers Tools/Sublime Text.app" /etc/hosts

alias - entrée:

alias edit="sudo open /Applications/Developers\ Tools/Sublime\ Text.app"

alias - utilisation:

edit /etc/hosts

Automator - Action rapide (à utiliser dans Finder):

  1. Nouveau > Action rapide

  2. Ajouter une action 'Exécuter un script shell' au flux de travail

  3. Configurer les options du flux de travail pour être - Le flux de travail reçoit les fichiers ou dossiers actuels dans Finder.app (les mots en gras sont des options à sélectionner)

  4. Collez l'extrait ci-dessous dans la boîte d'action du script Shell

    open -a /Applications/Developers\ Tools/Sublime\ Text.app "$@"

  5. Enregistrer le flux de travail - nom suggéré "Ouvrir dans Sublime Text (en tant que root)

  6. Ouvrir Préférences Système > Clavier > Services et vérifier que le script apparaît et est coché.

  7. Aller dans Finder, faire un clic droit et vous trouverez l'option dans le menu contextuel pour lancer l'entrée (le fichier sélectionné) en tant que root / superutilisateur

J'espère que cela aidera toute personne qui rencontre cela.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X