Insbesondere möchte ich die Bearbeitung der hosts
Datei 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 privileges
das Äquivalent zu ist sudo
und 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?
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:
Verwenden Sie einen Befehlszeilen-Editor wie emacs
, pico
oder vi
.
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).
Kopieren Sie die Datei einfach /etc/hosts
an einen anderen Speicherort, bearbeiten Sie sie dort und sudo
kopieren Sie die geänderte Datei dann mit zurück nach /etc
.
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.
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):
Neu > Schnellaktion
Fügen Sie dem Workflow die Aktion „Run Shell Script“ hinzu
Konfigurieren Sie die Workflow-Optionen zu - Workflow empfängt aktuelle Dateien oder Ordner in Finder.app (fettgedruckte Wörter sind Optionen zur Auswahl)
Fügen Sie das unten stehende Snippet in das Aktionsfeld Shell-Skript ein
open -a /Applications/Developers\ Tools/Sublime\ Text.app "$@"
Arbeitsablauf speichern – vorgeschlagener Name „In Sublime Text öffnen (als Root)
Öffnen Sie Systemeinstellungen > Tastatur > Dienste und vergewissern Sie sich, dass das Skript angezeigt wird und abgehakt ist.
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.
sudo open
wird die Anwendung nicht als Root ausgeführt.
Manngo