10

I am trying to use :wq to save a text file I have edited in Vim, but when I enter :wq I get the error

E45: 'readonly' option is set (add ! to override)`  

When I add ! to :wq like :wq!, I get this:

"/etc/dhcp/dhcpd.conf"

"/etc/dhcp/dhcpd.conf" E212: Can't open file for writing

The file I want to edit is dhcpd on the /etc/dhcpd path.

How can I do this?

Zanna
  • 70,465
Mohammad Reza Rezwani
  • 10,286
  • 36
  • 92
  • 128

2 Answers2

17

You need to open the file using superuser permissions as follows:

sudo vi /etc/dhcp/dhcpd.conf

edit the file by pressing i and then save and exit by pressing Esc and then either :wq or :x or just :w to save.


Thanks to Riking for suggesting sudoedit: you can use sudoedit /path/to/file/filename for editing files owned by root rather than using sudo <editor> /pat/to/file/filename. This is useful for enterprise-level machines or production machines since sudoedit logs to /var/log/auth.log.

If you want to change the default editor for sudoedit, do the following:

sudo update-alternatives --config editor

and then press Return and choose the editor of your choice and again press Return.


See also: A discussion on redit on why sudoedit may be advantegeous

jobin
  • 27,708
  • 3
    I prefer sudoedit for these situations - it creates a temporary copy, runs the editor, and copies the result. If you previously chose nano for that command, run EDITOR=vi sudoedit /etc/file. – Riking May 25 '14 at 08:18
  • 1
    @Riking: Thanks for sudoedit, didn't even know it existed. However, came across this while googling sudoedit. I'll suggest it, but leave it to the user if they find it necessary to use. – jobin May 25 '14 at 08:43
  • sudoedit also picks up on the EDITOR variable, it's easier to set that than configure alternatives – muru Jun 21 '16 at 07:24
10

/etc consists of all configurations files so to edit the files under /etc you need the superuser permissions but sometime we forget to use sudo. but at that time we can also use

:w !sudo tee %

then enter your administrator password

:q!

to exit successfully

muru
  • 197,895
  • 55
  • 485
  • 740
Aditya Jangid
  • 199
  • 1
  • 6
  • 1
    You can add cmap w!! w !sudo tee > /dev/null % to your .vimrc to allow saving via this method with :w!!. If you're interested in why this method works see http://stackoverflow.com/questions/2600783/how-does-the-vim-write-with-sudo-trick-work – Gerhard Burger Jun 21 '16 at 07:08