在我的 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
。