无法切换到主目录 /home/me:没有这个文件或目录

我在我的服务器上使用的是12.04版本。
我使用adduser mepasswd me创建了一个新用户,并将其添加到sudo组。
当我登录时,我看到的就是这个。
Could not chdir to home directory /home/me: No such file or directory    
$

我输入bash,它开始显示正常了。
$ bash
me@server:/$

如何避免每次登录都要输入“bash”?

2你是怎么创建新用户的? - MattDMo
2那个回答与这个问题完全无关,对我没有任何帮助。 - ddd
你用什么命令创建用户的?另外在你的问题中添加cat /etc/passwd的输出结果。 - Braiam
添加用户me,设置密码为me。 - ddd
2请将getent passwd $USER的输出添加到您的问题中。 - Florian Diesch
2个回答

adduser太基础了,而且没有正确设置默认值。建议尽可能使用useradd。您可以使用useradd -D me删除新用户并重新创建,或者自行修复:

sudo mkdir /home/me
sudo usermod --shell /bin/bash --home /home/me me
sudo chown -R me:me /home/me
cp /etc/skel/.* /home/me/

如果你按照Florian的建议使用了getent passwd me,你应该会看到类似下面这样的内容:
sudo getent passwd me
boggus:x:1002:1002::/home/me:/bin/sh

而且ls /home不会显示用户目录,就像你的错误一样。
Could not chdir to home directory /home/me: No such file or directory

然而,在最后一步我得到了cp: cannot stat /etc/skel/*': No such file or directory`这是什么意思? - ddd
1当我执行useradd -D me时,它只会输出参数列表。之前我已经运行了userdel me - ddd
请编辑您的问题并添加apt-cache policy passwd的输出结果。 - Braiam
@ddd 你确定是 user 然后 add 而不是 add 然后 user 吗?请使用复制粘贴以确保准确性。 - Braiam
1按照这个指示操作并没有成功解决问题。 - ddd
2@ddd 但是然后告诉我出了什么问题...编辑你的问题并添加信息... - Braiam
@ddd,你漏掉了“.”。你需要做的是将 /etc/skel/.* 复制到 /home/me/,而不是将 /etc/skel/* 复制到 /home/me/。 - Egwor
1@Braiam,我遇到了类似的问题,并按照你的指示进行了操作。最后一行(cp /etc/skel/.* /home/me/)出现错误:1. cp: 未指定 -r;省略目录 '/etc/skel/.' 2. cp: 未指定 -r;省略目录 '/etc/skel/..' 有什么想法吗? - Shannon
1@Shannon 复制命令已经成功地作用于三个隐藏文件(.profile, .bashrc, .bash_logout),而且(正确地)未能复制"."(当前目录)和".."(上级目录)。每个目录都自动包含了.和..,所以这个命令运行成功了。 - ubfan1

最快解决这个问题的方法是删除该用户,并使用以下命令创建新用户。
useradd -m -d /home/me -s /bin/bash -G sudo me

这个命令会创建一个家目录,并将bin/bash设置为新用户的默认shell。此外,它还赋予新用户sudo特权。

  • 相关问题