Specifically, I want to simplify editing the hosts
file, which requires root privileges.
The following command works in the shell:
sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts
From what I am able to learn, the following should work using Automator:
-- Run AppleScript
on run {input, parameters}
do shell script ¬
"/Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts" with administrator privileges
end run
… the key being that with administrator privileges
is the equivalent of sudo
and will ask for a password.
However, when I run the script, I get the following error:
The command terminated due to receipt of a signal.
and then
TextEdit quit unexpectedly.
… which looks serious.
If I try the same thing with Atom text editor, it works as intended.
How do I get TextEdit to run as root?
Best Answer
On the current version of macOS (10.12.6 at the time of this writing), this will not work from the shell either:
And if you check the crash logs, you'll find the following:
This is by design; TextEdit is a sandboxed app, and running it as root would defeat much of the purpose of sandboxing. I don't think you will be able to find a way to get it to run as root. This isn't a bad thing, though, as running a GUI app as root is generally a terrible idea for security, as there are many ways to surreptitiously inject code into a Cocoa app, and if that app runs as root, you can open up some pretty serious security vulnerabilities this way.
To edit files like
/etc/hosts
, I recommend finding another way:Use a command-line editor such as
emacs
,pico
, orvi
.Use a GUI-based text editor that has the feature to prompt for your admin password when needed (I believe BBEdit can do this, for example)
Simply copy the
/etc/hosts
file to another location, edit it there, and then usesudo
to copy the modified file back to/etc
.