Automator: Führen Sie TextEdit als Root aus

Insbesondere möchte ich die Bearbeitung der hostsDatei vereinfachen, für die Root-Rechte erforderlich sind.

Der folgende Befehl funktioniert in der Shell:

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

Nach dem, was ich lernen kann, sollte Folgendes mit Automator funktionieren:

-- Run AppleScript
on run {input, parameters}
    do shell script ¬
        "/Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts" with administrator privileges   
end run

… der Schlüssel ist, dass with administrator privilegesdas Äquivalent zu ist sudound nach einem Passwort fragt.

Wenn ich das Skript jedoch ausführe, erhalte ich die folgende Fehlermeldung:

Der Befehl wurde aufgrund des Empfangs eines Signals beendet.

und dann

TextEdit wurde unerwartet beendet.

… was seriös aussieht.

Wenn ich dasselbe mit dem Atom- Texteditor versuche, funktioniert es wie beabsichtigt.

Wie bringe ich TextEdit dazu , als root zu laufen?

Antworten (3)

Auf der aktuellen Version von macOS (10.12.6 zum Zeitpunkt des Schreibens dieses Artikels) funktioniert dies auch nicht von der Shell aus:

$ sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit 
Password:
Illegal instruction: 4

Und wenn Sie die Absturzprotokolle überprüfen, finden Sie Folgendes:

Sandbox registration internal error: Incoming message euid:0 does not match secinitd uid:501.

Dies ist beabsichtigt; TextEdit ist eine Sandbox-App, und das Ausführen als Root würde einen Großteil des Zwecks des Sandboxing zunichte machen. Ich glaube nicht, dass du einen Weg finden wirst, es als root laufen zu lassen. Dies ist jedoch keine schlechte Sache, da das Ausführen einer GUI-App als Root im Allgemeinen eine schlechte Idee für die Sicherheit ist, da es viele Möglichkeiten gibt, heimlich Code in eine Cocoa-App einzufügen, und wenn diese App als Root ausgeführt wird, können Sie sie öffnen auf diese Weise einige ziemlich ernste Sicherheitslücken aufdecken.

Um Dateien wie zu bearbeiten /etc/hosts, empfehle ich, einen anderen Weg zu finden:

  1. Verwenden Sie einen Befehlszeilen-Editor wie emacs, picooder vi.

  2. Verwenden Sie einen GUI-basierten Texteditor, der die Funktion hat, bei Bedarf nach Ihrem Admin-Passwort zu fragen (ich glaube, BBEdit kann dies zum Beispiel tun).

  3. Kopieren Sie die Datei einfach /etc/hostsan einen anderen Speicherort, bearbeiten Sie sie dort und sudokopieren Sie die geänderte Datei dann mit zurück nach /etc.

Eigentlich haben Sie recht, dass dieser Befehl auch nicht in der Shell funktioniert – nur für Atom. Der Grund, warum ich TextEdit verwenden wollte, ist der einfache Zugang für meine Schüler. Danke für die Antwort, aber zumindest erklärt es warum.

Nicht wirklich eine Antwort auf Ihre Frage, aber als Alternative haben Sie Gas Mask - Freeware Hosts-Dateieditor ausprobiert.
Es kann mehrere Versionen bearbeiten, speichern und im Handumdrehen wechseln.

Geben Sie hier die Bildbeschreibung ein

Schöner Fang. Ich habe nach so etwas gesucht, konnte aber nichts finden, weshalb ich aufgegeben und den TextEdit-Ansatz ausprobiert habe.

Nur um den Kreis zu schließen (weil es einer der Top-Hits bei Google war).

So öffnen Sie eine beliebige Datei

Terminal (bash/zsh):

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

Alias ​​- Eintrag:

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

Alias ​​- Verwendung:

edit /etc/hosts

Automator - Quick Action (zur Verwendung im Finder):

  1. Neu > Schnellaktion

  2. Fügen Sie dem Workflow die Aktion „Run Shell Script“ hinzu

  3. Konfigurieren Sie die Workflow-Optionen zu - Workflow empfängt aktuelle Dateien oder Ordner in Finder.app (fettgedruckte Wörter sind Optionen zur Auswahl)

  4. Fügen Sie das unten stehende Snippet in das Aktionsfeld Shell-Skript ein

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

  5. Arbeitsablauf speichern – vorgeschlagener Name „In Sublime Text öffnen (als Root)

  6. Öffnen Sie Systemeinstellungen > Tastatur > Dienste und vergewissern Sie sich, dass das Skript angezeigt wird und abgehakt ist.

  7. Gehen Sie zum Finder und klicken Sie mit der rechten Maustaste und Sie finden die Option im Kontextmenü, um die Eingabe (die ausgewählte Datei) als Root / Superuser zu starten

Hoffe, das hilft allen anderen, die darauf stoßen.

Bei Verwendung sudo openwird die Anwendung nicht als Root ausgeführt.