新创建的用户的 $HOME 环境变量不正确

新创建的用户的 $HOME 环境变量不正确

在我的 Ubuntu 机器上,我以“olduser”身份登录并使用以下命令创建“newuser”:

adduser --system --home /usr/share/newuser --no-create-home --ingroup newgroup --disabled-password --shell /bin/false newuser

这添加了一个新行:

newuser:x:104:1001::/usr/share/newuser:/bin/false

到我的/etc/passwd文件。但是,当我以“newuser”身份登录计算机(通过 sshing 进入计算机或从 shellnewuser运行sudo -u newuser bash)时,我的主目录设置为/home/olduser.

echo $HOME

给出

/home/olduser

上面提到的相同命令在 Debian 计算机上按预期工作,但在 Ubuntu 计算机上则不然。

为什么会发生这种情况?

我尝试使用命令更改主目录

usermod -m -d /usr/share/newuser newuser

这也没有帮助。

答案1

sudo不一定会更新HOME新用户的变量。如果您想HOME更新,请使用-H-i选项。例如:

sudo -Hu newuser bash

或者,您可以将此行添加到/etc/sudoers文件中以sudo自动更新HOME和其他相关变量:

Defaults        env_reset

许多发行版已经将其env_reset作为默认设置。

文档

man sudo从描述环境变量的部分来看:


如果指定了 -i 或 -H,在 sudoers 中设置了 env_reset 或always_set_home,或者指定了 -s 选项并在 sudoers 中设置了 set_home,则HOME设置为目标用户的主目录。

也可以看看man sudoers

相关内容