35

How can I fix the following error with sudo?

/etc$ sudo
sudo: /etc/sudoers.d is world writable
usage: sudo [-D level] -h | -K | -k | -V
usage: sudo -v [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-u user
            name|#uid]
usage: sudo -l[l] [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-U user
            name] [-u user name|#uid] [-g groupname|#gid] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C fd] [-D level] [-g
            groupname|#gid] [-p prompt] [-u user name|#uid] [-g groupname|#gid]
            [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C fd] [-D level] [-g
            groupname|#gid] [-p prompt] [-u user name|#uid] file ...
demure
  • 2,262
  • 1
  • 16
  • 19
kismat
  • 351
  • 1
  • 3
  • 3
  • looks like changing permissions on `/etc` is a bad thing http://serverfault.com/questions/364677/why-is-chmod-r-777-destructive http://serverfault.com/questions/221447/how-to-repair-restore-ubuntu-10-04-after-sudo-chmod-777 – zadubz Dec 29 '14 at 00:00
  • try `pkexec chmod 555 /etc/sudoers` –  Jul 29 '16 at 10:52
  • 1
    If "pkexec chmod 555 /etc/sudoers.d" does not work for you due to pkexec having a permission promblem, get the PID of the shell you are running pkexec in suing "echo $$" then log in another window and do a " pkttyagent --process XXX" with the XXX replaced with the PID of the other shell. Once that is running, retry the pkexec in other shell – Cullen Fluffy Jennings Feb 29 '20 at 23:59
  • Thank you, @CullenFluffyJennings. That worked for me. Keep safe... – Jonathan Apr 19 '21 at 13:17

3 Answers3

47

Run pkexec chmod 0755 /etc/sudoers.d

pkexec will use a different method of using root permissions, bypassing the issue.
And the chmod will fix the permissions.

kos
  • 35,535
  • 13
  • 101
  • 151
demure
  • 2,262
  • 1
  • 16
  • 19
40

Run this 2 commands with (555) permissions:

pkexec chmod 555 /etc/sudoers
pkexec chmod 555 /etc/sudoers.d/README
edwinksl
  • 23,569
  • 16
  • 74
  • 100
Kamal Jain
  • 509
  • 4
  • 2
13

Did you try going into recovery mode and switching the permissions back to 775 for sudoers? I tried it and it worked.

1) Get into Ubuntu Recovery

2) Do mount -rw -o remount /

3) Then chmod 775 -R /etc/sudoers and chmod 775 -R /etc/sudoers.d/.

This time it should work.

4) Then do a sudo apt-get install of any package to test before you leave recovery mode. Late reply but I encountered the issue recently and tried this. It worked fine atleast for the world writable issue.

Gdcrocx
  • 131
  • 1
  • 4
  • What do you mean by "Get into Ubuntu Recovery"? Once I'm at the recovery menu do I select `root`? That gets me to a root shell that is in recovery but this doesn't seem to work. – Mark Kramer Mar 04 '17 at 00:34
  • I got `sudo` to work by using live USB, mounting in `/mnt`, and `chroot /mnt` – qwr Aug 24 '18 at 23:10
  • thanks Gdcrocx. its work – Imon Dec 14 '21 at 11:46
  • after I execute the commands you wrote in recovery mode and restart, they are no more valid. – Asqan Sep 11 '22 at 10:58