我正在设置一个 Vagrant 盒子,我注意到一些奇怪的事情。
root@box:~# sudo --user=vagrant bash
bash: /root/.bashrc: Permission denied
vagrant@box:~$ export
declare -x HOME="/root"
为什么HOME
设置在/root
这里呢?用户 vagrant 的主目录当然不是/root
:
vagrant@box:~$ grep vagrant /etc/passwd
vagrant:x:1000:1000::/home/vagrant:/bin/bash
我在网上找到的所有内容都讨论了如何继承环境变量,而不是如何阻止它。 sudoers 文件包含env_reset
默认值。我不知道还有什么控制这种行为。
答案1
这是一个选择。如果您不喜欢它,可以使用-i
或-H
选项,或更改配置。 sudo(8) 手册页显示HOME
:
如果指定了
-i
或,或者在 中设置了,或者在 中指定并设置了该选项,则设置为目标用户的主目录。-H
env_reset
always_set_home
sudoers
-s
set_home
sudoers
实际上env_reset
在 Ubuntu 下没有影响$HOME
(但见下文)。这是手册页中的不准确之处。看启动板错误 #889936。
附加信息
env_reset
某些环境变量在提供时可能仍会保留。有编译时默认值,可以使用env_keep
选项更改;有关更多信息,请参阅 sudoers(5) 手册页。在sudo -V
root 下的输出中,您可以在“要保留的环境变量:”下看到这些环境变量的列表。特别是,HOME
在 Ubuntu 下默认列出,但在 Debian 下不列出。
有关更多信息,请参阅:
启动板错误#760140
HOME
关于Debian 和 Ubuntu 中的编译时默认值。