54

I am getting this error:

sudo: parse error in /etc/sudoers near line 23
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

I was trying to disable password authentication so I don't have to type password every time I want to install something, but I probably changed it in a not very good way. I am a newbie to Ubuntu, I got sick of Windows :)

So far I've found some people suggesting booting in single user mode, but I'm afraid of messing things up more.

How can I fix this error?

13
  • If you boot in single user mode and use visudo, then it won't let you save an incorrect file, so you will not be able to mess things up further.
    – nanofarad
    Oct 30, 2012 at 11:18
  • Thank you, how do I change the file, then? And, how exactly do I boot in single user mode? Oct 30, 2012 at 11:19
  • Hold Shift immediately while booting so that you get the GRUB screen. Select the recovery mode. Choose to drop to a root terminal. Run mount -n -o remount,rw / and then visudo. Ctrl+O saves, Ctrl+X exits without saving. It won't let you save a bad file.
    – nanofarad
    Oct 30, 2012 at 11:21
  • 2
    @ObsessiveSSOℲ it would be nice to convert the comment to answer and let the questioner to mark it as the best answer. For future - help - others I mean.
    – NickTux
    Oct 30, 2012 at 12:14
  • 2
    On newer Ubuntu distributions, there's a simple solution (not requiring any reboot nor recovery), described here: askubuntu.com/a/73872
    – user321342
    Aug 28, 2014 at 11:23

6 Answers 6

62

Fixing this is dead simple, and it is answered elsewhere on askubuntu.

Short answer, use:

pkexec editor_of_choice
6
  • 2
    This is definitely the simplest and best answer. I had no clue pkexec existed. Thanks a lot both
    – Bizmate
    Apr 14, 2016 at 17:05
  • 4
    When I do pkexec, it gives list of users to authenticate. When I type password, it gives Authentication failure. Please help. May 24, 2018 at 5:44
  • 5
    @Shyamkkhadka I ran into this also. This solution on GitHub saved me and about a hundred other people.
    – gillytech
    Feb 19, 2020 at 18:49
  • This didnt work for me with an error " No session for cookie " but I did this in two terminals: In the first terminal run the following command to get its PID. echo $$ In the second terminal run pkttyagent --process PID_FROM_STEP_1 Then you can run "sudo pico /etc/sudoers" or whatever you want in first terminal, and the second terminal will ask for user password. and will work
    – DefToneR
    May 4, 2021 at 21:08
  • 🤝🏻 thx, useful compare to reboot in recovery mode red-tape procedures... stackoverflow.com/a/58195402/3806250 and stackoverflow.com/a/58199760/3806250 Jan 14, 2022 at 18:36
19

Hold Shift immediately while booting so that you get the GRUB screen. Select the recovery mode. Choose to drop to a root terminal. Run mount -n -o remount,rw / and then visudo. It'll let you fix your problems with the file and save. It won't let you save a malformed file.

5
  • Shift didn't work for me, I had be pressing keys to get grub
    – nafg
    Nov 19, 2013 at 6:13
  • @nafg Every configuration is different.
    – nanofarad
    Nov 19, 2013 at 11:17
  • I don't have visudo installed in my ubuntu. What can I do ? May 24, 2018 at 5:45
  • In Ubuntu 16.04, "Drop to Root terminal" asks for root password (which obviously will not work, because /etc/sudoers is broken). Pressing Ctrl+D will just bring you back to the GRUB screen. Aug 14, 2018 at 9:26
  • Thank you so much, I'm glad I know about dropping to a root terminal now, that's very useful.
    – Matthew
    Feb 16, 2020 at 0:45
4

Folowing solution is for remote servers, it works!

http://ubuntuforums.org/showthread.php?t=2036382&p=12144840#post12144840

then just use visudo to add wheel, etc


  1. Rename your current file

    mv /etc/sudoers{,.bak}

  2. Create a new one vi /etc/sudoers with the following basic content:

    # /etc/sudoers
    #
    # This file MUST be edited with the 'visudo' command as root.
    #
    # See the man page for details on how to write a sudoers file.
    # Defaults    env_reset
    # Host alias specification
    # User alias specification
    # Cmnd alias specification
    # User privilege specification
    root    ALL=(ALL) ALL
    # Allow members of group sudo to execute any command after they have
    # provided their password
    # (Note that later entries override this, so you might need to move
    # it further down)
    %sudo ALL=(ALL) ALL
    #
    #includedir /etc/sudoers.d
    # Members of the admin group may gain root privileges
    %admin ALL=(ALL) ALL
    
  3. Run visudo and add your custom stuff.

2
  • 4
    how to move it without sudo and sudo is broken?
    – Ewoks
    Jul 27, 2020 at 12:42
  • @Ewoks use 'su' , but you have to know the super user password Oct 12, 2023 at 10:37
2

If u messed up your sudoers file.You'll need to:

  • Reboot into recovery mode (hit escape during boot, choose the recovery mode option on the grub screen)
  • Choose the 'Enable networking' option (if you don't your filesystem will be mounted as read-only. who knew)
  • Chosee the 'Drop to root shell' option
  • run visudo, fix your file
  • Reboot with normal grub option

source :- http://mario.net.au/content/recover-etcsudoers-ubuntu-1204

1
  • 1
    Follow up question: When I choose the Enable networking option, I'm prompted to tell the system that I'm sure. I do that and I just drop into nothing. No root prompt, nothing. What should I expect to see/do after the 2nd step? Thanks. Jan 23, 2013 at 14:25
2

You can do this:

Create a copy

cp /etc/sudoers /etc/sudoers.bak

Edit problem parts there

vim /etc/sudoers.bak

Replace the origin sudoers file

cp /etc/sudoers.bak /etc/sudoers

It works for me.

2
  • It worked when i logged in using super user (su -) and executed above steps.. Thanks
    – Dave
    Oct 13, 2014 at 6:15
  • 30
    But you need to be root. so... Nov 22, 2014 at 9:46
1

I screwed up the sudoers file to find out that I don't remember the root password. Solution: rebooted under Windows (I have a dual boot) and edited the file using ext2fsd (you have to reboot after the installation). In principle, this could be another Linux or a live flash, not necessarily Windows.

1
  • A lot of people dual-boot Windows and Ubuntu, so this is a solid approach! I know been a while since you've posted this answer... but might you be willing to edit this to expand it with detailed information about specifically how to set up and use ext2fsd for this purpose? Jan 9, 2017 at 1:29

Not the answer you're looking for? Browse other questions tagged .