【问题解决】VMware +Ubuntu20.04创建用户后无法登陆的问题
🌞这个blog用于解决VMware +Ubuntu20.04创建用户后无法登陆的问题
文章目录
- 问题说明
- 解决方案
- 问题分析:
- 步骤:
- 总结:
问题说明
这件事是这样的,我尝试用虚拟机创建一个新用户
大概步骤就是
sudo useradd username
sudo passwd username
id username //查看是否创建成功
这两步结束之后
cd ~
cat /etc/passwd
确实是创建成功了
这个时候我在虚拟机上面切换用户 并登陆 发现登陆不上去,密码当然是包对的!就是一直处于登陆的界面。
解决方案
然后我问了一下万能的AI:
可以确定是新用户的默认 shell 设置不正确导致的。
问题分析:
useradd -m mosong:使用 sudo 运行 useradd -m mosong 成功创建了用户 mosong 和其家目录 /home/mosong。
默认无密码:useradd 默认创建的用户是没有密码的,所以你最初 su mosong 失败了。
passwd mosong:你通过 sudo passwd mosong 成功为 mosong 设置了密码。
su mosong 后的异常行为
正常的 bash 或 zsh 会话会显示如 mosong@ubuntu:~$ 这样的提示符。
你看到的 $ 提示符暗示它可能运行的是 /bin/sh(在 Ubuntu 上通常是 /bin/dash 的符号链接),或一个更简陋的 shell。
更重要的是,$ 1 报错 sh: 1: 1: not found 和 $ $PATH 报错 sh: 2: … not found 表明这个 shell 环境非常不健全,甚至无法正确解析 $PATH 变量或你输入的简单命令。这通常发生在用户的 默认 shell 没有被正确设置,或者设置了一个不存在或有问题的程序作为 shell。
图形界面无法登录:这是以上问题的直接后果。图形登录管理器(如 GDM3, LightDM)在尝试为用户启动会话时,会尝试执行用户指定的默认 shell。如果这个 shell 无效、缺失或配置错误,会话就无法启动,登录管理器会简单地把你踢回登录界面,而不会给出详细错误。
解决方案:
所以需要为 mosong 用户设置一个正确的默认交互式 shell,例如 /bin/bash。
步骤:
切换回你的管理员用户或其他有 sudo 权限的用户。
如果你还在 su mosong 的简陋 shell 里,可以输入 exit 退回到用户的 shell。
更改 mosong 用户的默认 shell 为 /bin/bash。
使用 usermod 命令:
sudo usermod -s /bin/bash mosong
-s 或 --shell 选项用于指定用户的登录 shell。
/bin/bash 是 Ubuntu 和大多数 Linux 发行版上标准的、功能齐全的交互式 shell。
验证(可选):可以检查用户 mosong 的 shell 是否已更改:
grep mosong /etc/passwd
输出应该类似于:
mosong : x: 1001:1001:mosong,:/home/mosong:/bin/bash
(注意最后一部分是 /bin/bash)
最后尝试重新登陆。
总结:
useradd 命令在默认情况下(如果没有使用 -s 参数指定 shell),可能会给用户分配一个 /bin/sh 或者一个非常基础的 shell。对于需要交互式登录(尤其是图形界面登录)的用户,通常需要指定一个功能更强大的 shell,比如 /bin/bash。通过 usermod -s /bin/bash mosong,你为 mosong 设置了一个合适的 shell,解决了登录问题。
于是!!可以了!!