How to fix sudo must be owned by uid 0 and have the setuid bit set in WSL
So I recently took up the challenge of turning my PC with only Ubuntu KDE installed into a dual-boot Windows 10 PC. I've been on Ubuntu since 2008 and after a decade free of Windows at home I decided to take up the challenge of using WSL (Windows subsystem for Linux).
However after developing and running all my favorite cli tools for nearly 3 months I ran into /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
error.
Normally on a Linux host you'd login to a root shell and fix things but WSL didn't appear to have a way to login as or switch to root from the scope of bash.exe
.
Dare I venture into the land of PowerShell? Seems inevitable.
I've been running WSL since before the Fall Creators Update so the lx subsystem
environment is managed with lxrun
(can't possibly be that tool from the 90's).
Appears that switching the user is as simple as running lxrun /setdefaultuser root
in PowerShell, then you can go into a new bash.exe
session and fix the following like you would on a Linux host;
- Fix the owner of sudo
chown root:root /usr/bin/sudo
- Fix permissions of sudo
chmod 4755 /usr/bin/sudo
Exit the session and go back to PowerShell and run lxrun /setdefaultuser ubuntu
to set the user back.
Start a new bash.exe
session with sudo fixed.
Now if you are running WSL installed after the Fall Creators Update I believe the PowerShell commands are now different. You can try ubuntu config --default-user root
first then ubuntu config --default-user ubuntu
to revert, but I have no way to verifying this without breaking my now working environment.