我正在设置一个 Vagrant 盒子,我注意到一些我觉得很奇怪的东西。
root@box:~# sudo --user=vagrant bash
bash: /root/.bashrc: Permission denied
vagrant@box:~$ export
declare -x HOME="/root"
Run Code Online (Sandbox Code Playgroud)
为什么HOME设置在/root这里?用户 vagrant 的主目录肯定不是/root:
vagrant@box:~$ grep vagrant /etc/passwd
vagrant:x:1000:1000::/home/vagrant:/bin/bash
Run Code Online (Sandbox Code Playgroud)
我在网上找到的所有内容都讨论了如何继承环境变量,而不是如何防止它。sudoers 文件包含env_reset默认值。我不知道还有什么可以控制这种行为。
这是一个选择。如果不喜欢,可以使用-i或-H选项,或者更改配置。sudo(8) 手册页说HOME:
设置为目标用户的主目录,如果
-i或-H指定,env_reset或者always_set_home设置在sudoers或-s指定选项并set_home设置为sudoers。
实际上在 Ubuntu 下env_reset没有影响$HOME(但见下文)。这是手册页中的错误。请参阅启动板错误 #889936。
附加信息
某些环境变量在env_reset提供时可能仍会保留。有编译时默认值,可以通过env_keep选项更改;有关更多信息,请参阅 sudoers(5) 手册页。在sudo -Vroot 下的输出中,您可以在“要保留的环境变量:”下看到这些环境变量的列表。特别是,HOME在 Ubuntu 下默认列出,但不在 Debian 下列出。
有关更多信息,请参阅:
Launchpad 错误 #760140关于HOMEDebian 和 Ubuntu 中的编译时默认值。
| 归档时间: |
|
| 查看次数: |
476 次 |
| 最近记录: |