Usage from WSL
On WSL (Windows Subsystem for Linux), elevation and root
are different concepts. root
allows full administration of WSL but not the Windows system. Use WSL's native su
or sudo
to gain root
access. To get admin privilege on the Windows box you need to elevate the WSL.EXE
process. gsudo
allows that (a UAC popup will appear).
On WSL bash, prepend gsudo
to elevate WSL commands or gsudo -d
for CMD commands.
# elevate default shell
PC:~$ gsudo
# run elevated WSL command
PC:~$ gsudo mkdir /mnt/c/Windows/MyFolder
# run elevated Windows command
PC:~$ gsudo -d notepad C:/Windows/System32/drivers/etc/hosts
PC:~$ gsudo -d "notepad C:\Windows\System32\drivers\etc\hosts"
PC:~$ gsudo -d "echo 127.0.0.1 www.MyWeb.com >> %windir%\System32\drivers\etc\hosts"
# test for gsudo and command success
retval=$?;
if [ $retval -eq 0 ]; then
echo "Success";
elif [ $retval -eq $((999 % 256)) ]; then # gsudo failure exit code (999) is read as 231 on wsl (999 mod 256)
echo "gsudo failed to elevate!";
else
echo "Command failed with exit code $retval";
fi;