WSL中从root切换至普通用户及默认启动用户异常问题求助
WSL中从root切换至普通用户及默认启动用户异常问题求助
Hey,别慌,刚接触Linux/WSL遇到这种启动用户变root的情况很常见,我给你几个实用的解决办法:
一、临时切换到rich用户(先解决当前会话的问题)
如果su - rich没效果,你可以试试这几个命令,说不定能绕开环境问题:
- 先确认rich用户是否真的存在,执行:
cat /etc/passwd | grep rich
如果能看到类似rich:x:1000:1000:,,,:/home/rich:/bin/bash的输出,说明用户没问题;如果没结果,可能是用户被误删了,不过你说之前能正常用,大概率不会是这个情况。 - 尝试用
sudo强制切换到rich的登录shell:exec sudo -iu rich
这个命令会直接切换到rich用户的完整环境,包括自动跳转到/home/rich目录,比su更可靠。
二、永久修改默认启动用户(彻底解决每次打开都进root的问题)
这才是关键,不然每次都手动切换太麻烦,推荐两种方法:
方法1:用WSL官方配置文件(推荐,适用于WSL2和较新的WSL1)
- 现在你是root身份,直接编辑
/etc/wsl.conf文件(如果不存在就新建):nano /etc/wsl.conf - 在文件里添加以下内容:
[user] default=rich - 按
Ctrl+O保存,Ctrl+X退出编辑器。 - 关闭所有WSL窗口,然后在Windows的命令提示符(CMD)或PowerShell里执行:
wsl --terminate <你的发行版名称>
比如你用的是Ubuntu,就输入wsl --terminate Ubuntu,这个命令会彻底终止WSL实例,让配置生效。 - 重新打开WSL,应该就默认进入rich用户的/home/rich目录了。
方法2:检查用户登录shell是否正常
如果上述方法还是不行,可能是rich用户的登录shell被改成了无法登录的类型,比如/sbin/nologin:
- 执行
cat /etc/passwd | grep rich,看最后一列是不是/bin/bash或者/bin/zsh这类可交互的shell。 - 如果不是,执行
usermod -s /bin/bash rich修改回来,再重启WSL试试。
为什么login和su - rich可能没效果?
login命令在WSL的默认终端里有时候会因为终端环境不支持(比如缺少tty)而失效;su - rich失败可能是rich用户的环境变量配置有问题,或者登录shell异常,这时候用sudo -iu就能绕开这些问题。
备注:内容来源于stack exchange,提问作者richs
相关产品推荐
相关产品推荐

