How to solve this error `sudo: /usr/local/bin/sudo must be owned by uid 0 and have the setuid bit set` without reinstalling ubuntu?
must be owned by uid 0 and have the setuid bit set
Check the current owner and permissions with
ls -l /usr/bin/sudo
. It should similar to:-rwsr-xr-x 1 root root 157192 2018-08-23 10:36:40 /usr/bin/sudo
Run
pkexec bash
in a terminal to get a shell with root permissions.Fix ownership of the file:
chown root:root /usr/bin/sudo
Set the setuid bit:
chmod u+s /usr/bin/sudo
sudo
should now be available for you to make further repairs.
Related videos on Youtube
ByteByByte
Updated on September 18, 2022Comments
-
ByteByByte over 1 year
TLDR: I am running Ubuntu 18.04 with i3 and I messed up my permissions. Whenever I run a command with sudo, I get this error message,
sudo: /usr/local/bin/sudo must be owned by uid 0 and have the setuid bit set
. I am trying to figure out if I need to fully re-install Ubuntu or if this can be fixed in a less drastic way.What had happened was: I was trying to upgrade my npm version with nvm and the nvm command was not being recognized. I followed this stackoverflow post's instructions https://stackoverflow.com/questions/21215059/cant-use-nvm-from-root-or-sudo to copy the version of node I had active via nvm into the
/usr/local
. I ran the below. (Yes, I realize now that I should have investigated this series of commands before running them.)n=$(which node); \ n=${n%/bin/node}; \ chmod -R 755 $n/bin/*; \ sudo cp -r $n/{bin,lib,share} /usr/local
I then got tons of errors saying
chmod: changing permissions of '/usr/bin/*': Operation not permitted
After that I ran
sudo nvm install-latest-npm
and got the same error as I had before,sudo: nvm: command not found
.Then I tried running another command with sudo, and got the error
sudo: /usr/local/bin/sudo must be owned by uid 0 and have the setuid bit set
. I now get this error whenever I run anything with sudo.I think this problem was caused by me running
chmod -R 755 $n/bin/*; \
but I'm confused because the error message said permissions for/usr/bin
were not changed.
I have a two-part question: 1) What caused this error? Am I correct that it was caused by thechmod -R
command? 2) Can I fix this without completely reinstalling ubuntu? If so, how?For context, I already read these two questions sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0 and this /usr/bin/sudo must be owned by uid 0 and have the setuid bit set. However, I am not sure if the advice from the first question's answer applies to this situation, because the error message I receive is not referring specifically to
/usr/lib/sudo/sudoers.so
.Thanks for reading!
-
steeldriver over 5 yearsPossibly a more relevant previous question is What if I accidentally run command “chmod -R” on system directories (/, /etc, …)
-
Terrance over 5 yearsPossible solution: askubuntu.com/a/634013/231142
-
-
Terrance over 5 yearsPretty good thinking! Back when I wrote my answer I didn't even know about pkexec. I sure do now! Great answer!
-
ByteByByte over 5 years@xiota Thank you for this very thorough response. When I checked the current owner and permissions, it was extremely similar to what you showed,
-rwsr-xr-x 1 root root 149080 Jan 17 2018 /usr/bin/sudo
. However, when I ranpkexec bash
, I got an error message,pkexec must be setuid root
. Since I wasn't able to get a shell with root permissions, I am going to boot up in recovery mode and run the suggested commands from a shell in root mode there. I will let you know if that approach works. -
xiota over 5 yearsWhile you are fixing
sudo
, you probably need to fixpkexec
too. -
ByteByByte over 5 yearsI ran the commands you listed from a root shell in recovery mode. Unfortunately, I still can't use sudo or pkexec outside of recovery mode, and I get the same error messages as I did previously. What should I do to fix
pkexec
? (I tried googling this but didn't find anything helpful) -
xiota over 5 yearsprobably whatever you did did too much damage, and you'll need to reinstall.
-
Paul Jurczak almost 4 yearsThank you.
pkexec bash
is so much better than rebooting in maintenance mode!