为什么 sudo -H 不设置 HOME 变量?

为什么 sudo -H 不设置 HOME 变量?

我刚刚开始使用 Manjaro(基于 Arch Linux),并且遇到了一件有趣的事情:

$ sudo env | grep HOME
HOME=/root
$ sudo -H env | grep HOME
HOME=/root

我查看了手册页sudo并检查以确保我的主目录实际上在/etc/passwd.根据我的理解,上述第二个命令的输出应该/home/laurence。我缺少什么?

答案1

手册页sudo写道,

-H, --set-home 请求安全策略将HOME环境变量设置为目标用户的密码数据库条目指定的主目录。根据策略,这可能是默认行为。

这里的关键是-H设置目标用户的主目录。当您致电时,sudo env目标用户被推断为root。 (如果您使用类似的东西,sudo -u john -H env您将获得 的主目录john。)

相关内容