OS X: Edit a file using TextEdit as root or superuser

Contributor Icon Contributed by qmchenry Date Icon January 17, 2008  
Tag Icon Tagged: Mac system administration

Editing some files on an OS X system requires superuser or root permissions. Typically, this is accomplished using sudo (which lets authorized users assume superuser powers, cape and tights optional) and vi. To the uninitiated, vi can cause intestinal distress and hair loss. An alternative is the use of TextEdit, the graphical text editor application, but under normal circumstances, you can open a system file like hosts but cannot save it. Following the steps in this recipe, you can edit a system file using TextEdit and put off learning vi for another day.


The sudo command line application allows a user to run another application as though they are another user. Most commonly (and by default) the other user is root, the superuser of the system who can do anything to any file on the box. In this case we want to launch the TextEdit application.

If you’ve never poked around at an application in OS X, it’s interesting to take a peek. When you look at the /Applications folder in a finder window, you’ll see the applications listed by name such as TextEdit. If you list the files from the command line ( ls -l /Applications ) they are actually directories, not simply files, and have a .app extension like TextEdit.app. You can change directory into one of these directories and look around. If you look in a few, you’ll see that there is some standard organization in them and that should make you feel a little warmer and possibly fuzzier about this whole situation. This directory structure allows the applications to have many supporting files and resources neatly contained within them. Of interest to us is the location of the actual executable file inside the app directory. In the case of TextEdit, the path to this executable is /Applications/TextEdit.app/Contents/MacOS/TextEdit

Based on this information, running TextEdit with sudo to edit the /etc/hosts file becomes a simple task (if a rather long command line, sorry):


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

When you run this command from a command line (in a Terminal window), you’ll be prompted for a password. The correct password is your own (the password of the user logged into OS X, also the password you provide when doing system updates and so on), not the root user’s password (which doesn’t exist by default, anyway).

Once you enter your password, a TextEdit window will open and the contents of the file you are editing will appear. Edit to your heart’s content and save normally when you are done. Just keep in mind that most system files are protected from writing for a good reason (like if you make a mistake editing them, bad things may happen) so edit at your own risk.

Previous recipe | Next recipe |
 
  • mori
    I get this error trying this hint:

    2008-12-02 22:13:54.216 TextEdit[1144:c17] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x4403, name = 'com.apple.TextEdit.ServiceProvider'
    See /usr/include/servers/bootstrap_defs.h for the error codes.
  • I get that error sometimes too. It shows up in the terminal after textedit is loaded. It still works fine though.
  • Hank Z
    Does this still work under Leopard???????

    I enter

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

    Then my password and Text Edit does not open the HOSTS file.

    Is something Wrong
  • Gerry
    make sure ur password isn't blank. Mine was and I had the same problem. But once I changed my password to sth else, it works perfectly.
blog comments powered by Disqus