我知道我不应该do-release-upgrade
在 WSL 中运行,但我还是这么做了。升级本身没有错误,但任何运行 sudo 的尝试都会返回:
sudo: no tty present and no askpass program specified
ls -l /dev
作为普通用户的输出:
ls: cannot access 'lxss': Operation not permitted
ls: random: Invalid argument
ls: tty: Invalid argument
ls: tty0: Invalid argument
total 0
drwxr-xr-x 2 root root 0 Aug 15 19:27 block
lrwxrwxrwx 1 root root 13 Aug 15 19:27 fd -> /proc/self/fd
crw------- 1 root root 0, 0 Aug 15 19:32 kmsg
c????????? ? ? ? ? ? lxss
crw-rw-rw- 1 root root 1, 3 Dec 31 1969 null
crw-rw-rw- 0 root tty 5, 2 Aug 15 19:28 ptmx
drwxr-xr-x 0 root root 0 Aug 15 19:27 pts
crw-rw-rw- 1 root root 1, 8 Aug 15 19:32 random
lrwxrwxrwx 1 root root 8 Aug 15 19:27 shm -> /run/shm
lrwxrwxrwx 1 root root 15 Aug 15 19:27 stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Aug 15 19:27 stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Aug 15 19:27 stdout -> /proc/self/fd/1
crw--w---- 0 me tty 136, 0 Dec 31 1969 tty
crw-rw-rw- 1 root tty 4, 0 Aug 15 2016 tty0
crw------- 1 me tty 4, 1 Aug 15 2016 tty1
crw-rw-rw- 1 root root 1, 9 Aug 15 19:32 urandom
crw-rw-rw- 1 root root 0, 0 Aug 15 19:32 zero
以 root 身份运行(使用 lxrun.exe/setdefaultuser)会返回相同的结果。
我知道我可以重新安装 Ubuntu,但我仍然好奇是什么原因导致了这个问题以及是否有简单的解决方法。
哦,然后date
就返回了Mon Aug 15 19:45:49 DST 2016
,就像它应该的那样。
答案1
除了下载旧软件包之外,还有什么方法可以帮助呢:
- 通过 或 以 Root 身份登录
lxrun /setdefaultuser root
(如果您尚未升级)sudo su
- 通过以下方式为 Root 用户设置密码
passwd
现在,您只需使用su root
并输入您设置的密码即可随时切换到 root,而无需通过 lxrun 切换默认用户。
另外,你可以完全阻止 sudo 要求输入密码,正如几个答案中提到的那样这里:
为了完全阻止 sudo 询问密码,您可以在 /etc/sudoers 文件末尾添加以下行(visudo
以 root 身份编辑文件)
<username> ALL=(ALL) NOPASSWD: ALL
请注意,这将导致 sudo 在执行任何 Sudo 命令时不再要求输入密码。如果您想限制可以使用 sudo 使用的程序,请添加二进制文件的完整路径(逗号分隔)而不是最后的 ALL,例如:
<username> ALL=(ALL) NOPASSWD: /usr/sbin/cron, /usr/sbin/visudo
答案2
找到解决方案这里:
从cmd:
lxrun /setdefaultuser root
以 root 身份从 bash 执行:
wget http://mirrors.kernel.org/ubuntu/pool/main/s/sudo/sudo_1.8.9p5-1ubuntu1.1_amd64.deb
wget http://mirrors.kernel.org/ubuntu/pool/main/p/procps/procps_3.3.9-1ubuntu2_amd64.deb
wget http://mirrors.kernel.org/ubuntu/pool/main/s/strace/strace_4.8-1ubuntu5_amd64.deb
dpkg -i sudo_1.8.9p5-1ubuntu1.1_amd64.deb
dpkg -i procps_3.3.9-1ubuntu2_amd64.deb
dpkg -i strace_4.8-1ubuntu5_amd64.deb
完成后,不要忘记设置非root默认用户!
lxrun /setdefaultuser <your user>
答案3
从cmd:
ubuntu config --default-user root
在当前 Windows 命令提示符中运行 WSL
ubuntu.exe
查看最近添加到 Ubuntu 系统的三个用户
tail -3 /etc/passwd
更改 user01 的密码
passwd user01
退出 WSL
exit