如何修复未连接的用户?

如何修复未连接的用户?

因此,我正在使用 WSL,最近我在 Windows 中找到了 Ubuntu 文件的路径。我通过 Windows 重命名了用户主文件夹,现在我看到以下内容:

This message is shown once a day.
To disable it please create the 
/home/useradd/.hushlogin file.
touch: cannot touch '/home/userad/.motd_shown':
Permission denied
-bash: /home/useradd/.bash_profile: 
Permission denied   

我真的不知道该做什么以及如何解决它。

答案1

我最近在 Windows 中找到了 Ubuntu 文件的路径。我通过 Windows 重命名了用户主文件夹

首先,不要那样做!;-)

虽然正常的 WSL 权限不应该首先,你显然能够以某种方式做到这一点。我不确定怎么做,但这并不重要。只需重命名 Linux 用户的主文件夹即可绝不即使在“普通”(非 WSL)Ubuntu 中也可以工作。就此而言,重命名 Windows 用户的文件夹会产生类似(甚至更糟)的效果。

虽然我无法通过 Windows 重命名用户的主目录,但我仍然可以通过以 root 身份启动 Ubuntu 来重现相同的错误:

wsl ~ -d Ubuntu -u root

然后:

mv /home/ntd /home/xyz

之后,当我尝试以 ntd 用户身份登录时,是的,我看到了该消息。

问题是 Ubuntu 仍然认为我的用户的主目录是/home/ntd(显然你的用户也是/home/useradd)。例如:

# echo $HOME
/home/ntd
# cd ~
-bash: cd: /home/ntd: No such file or directory

此外,默认启动文件参考$HOME。例如,/etc/profile.d/update-motd.sh您将发现:

if [ ! -e "$HOME/.hushlogin" ] && [ -z "$MOTD_SHOWN" ] && ! find $stamp -newermt 'today 0:00' 2> /dev/null | grep -q -m 1 '.'; then
                [ $(id -u) -eq 0 ] || SHOW="--show-only"
                update-motd $SHOW
                echo ""
                eval_gettext "This message is shown once a day. To disable it please create the"
                echo -n "$HOME/.hushlogin "
...

我真的不知道该做什么以及如何解决它。

此时,解决该问题的最简单方法是告诉 Ubuntu 用户的新的主目录。您可以通过以下方式执行此操作:

  • 退出 Ubuntu

  • 启动 PowerShell 并:

    wsl ~ -u root
    
  • 这将以 root 用户身份启动 Ubuntu。然后使用以下命令启动 passwd 文件的“安全编辑器”:

    vipw
    
  • 查找以您的正常用户名开头的行(听起来像是useradd)。它可能看起来像:

    useradd:x:1000:1000:,,,:/home/useradd:/bin/bash
    
  • 将 更改/home/useradd为新的目录名称。

  • 保存并退出

退出 Ubuntu 并以普通用户身份重新启动。希望错误能够得到修复。


请注意,更改目录名称的正确方法是(如这个问题) 来使用usermod -d。这在 WSL 中比平时容易得多,因为您可以轻松地以 root 身份启动并确保您的普通用户未被使用。

  • 退出 Ubuntu 并从 PowerShell:

    wsl -l -v
    # Confirm the name of the distribution being used
    # and replace "Ubuntu" below with the correct name if 
    # it is different
    
    wsl --terminate Ubuntu
    wsl ~ -u root
    
  • 在 Ubuntu 中:

    usermod -d /home/<new_directory> -m <username>
    

指定-d新目录,并-m指定应将现有用户文件移动到该目录。

相关内容