因此,我正在使用 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
指定应将现有用户文件移动到该目录。