When I open the file with TextEdit (I don't want (truly, I am not able) to use vim), it is seen as "locked", even if I modify the permissions of the file via the "Get Info" window.
How can I modify the hosts file with TextEdit?
In one line, from Terminal:
# Catalina and newer
sudo -b /System/Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts
# before Catalina
sudo -b /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts
Make your changes, save and close.
sudo nano /private/etc/hosts
to edit the hosts file within Terminal, Control-O to save, then hit enter
Open TextEdit as sudo
sudo -b /System/Applications/TextEdit.app/Contents/MacOS/TextEdit
Open /etc/hosts in this new TextEdit instance using any of the following methods:
Alternatively, you can edit in Terminal using nano:
SUDO_EDITOR=nano sudo -e /etc/hosts
Using sudo -e
ensures that temporary files etc. are handled in the proper way and you don't run into permission issues with them. nano
is a simple console-based editor which is quite user-friendly.
You could try TextWrangler for this sort of thing; much more capable than TextEdit, and if you use the direct install from BareBones Software instead of the App Store version, it will happily open locked files. When you try, it asks permission, reminding you that you are not a member of the required group, but password entry will allow you to open and edit the file. Plus, it has optional command line additions (also not built in to App Store version) that will allow you to use TextWrangler by entering edit (name of file)
to open things directly from Terminal. Open File dialog has a handy "show invisibles" option to help you open and edit hidden or dot-prefixed files too. It's a free app so no risk in trying.
if you can't use vim, try using just 'vi' or other terminal editor like nano, pico, mcedit .
another option is just to copy it to some place you have rights to access, like:
cp /etc/hosts /tmp/hosts.tmp
or alternativelly
cat /etc/hosts > /tmp/hosts.tmp
then edit it with any text editor you are used to:
open /tmp/hosts.tmp
and then copy/replace it back with admin rights:
sudo cp /tmp/hosts.tmp /etc/hosts
or alternativelly:
cat /tmp/hosts.tmp | sudo tee /etc/hosts
If you like simple, you can research vim tool which installed on macOS:
sudo vi /etc/hosts
TextEdit will not work for this use case. Use an editor like Sublime Text and you will have fewer problems editing files like the hosts file.
I'm using macOS Big Sur and this is what worked for me:
sudo vi /etc/hosts
As opposed to next command that didn't work:
sudo open /etc/hosts
I got this error message
You don’t own the file “hosts” and don’t have permission to write to it. You can duplicate this document and edit the duplicate. Only the duplicate will include your changes. [Cancel] [Duplicate]
What worked for me is creating a root user following https://support.apple.com/en-us/HT204012
Then simply:
su root
and do changes.
sudo -s
(which gives you root without enabling root login)?
I am in HighSierra, and I remember well from Lion and later until including HighSierra that you select "Hosts" and open it with Textedit without any ado.
root
user and while anyone can easily open the hosts file in TextEdit, one cannot just edit it unless opened as root
, as suggested in the accepted answer, although that too may have issues all these years later.
Commented
Jan 3, 2019 at 18:56
nano
to be a more approachable terminal-based text editor thanvim
for simple task like this.