sudo 和 sudo -H 有什么区别?

sudo 和 sudo -H 有什么区别?

sudo -H + command有时我在许多网站的教程中看到例如的用法sudo -H gedit /etc/apt/sources.list。但是我知道sudo gedit /etc/apt/sources.list可以完成工作。
所以有人能告诉我sudo -H和之间有什么区别吗sudo

答案1

不同之处在于,例如,在关闭时gedit写入首选项文件或类似内容。许多程序都会这样做。$HOME

当你跑步时

sudo gedit ...

然后$HOME仍然设置为你的主目录(例如/home/singriumgedit并将在那里写入其设置,但首选项文件将归 拥有。这可能会使以后以您的用户身份root运行变得困难,因为由于缺乏权限,他们无法写入其设置。geditgedit

当你运行

sudo -H gedit ...

然后$HOME将被设置为root的主目录(通常是/root)并且gedit会将其首选项文件写入那里而不会影响您的帐户。

答案2

sudo -H是相同的sudo --set-home

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

它避免用户的主文件夹权限被更改为 root。

答案3

man sudo

-H' The -H (HOME) option requests that the security policy set the HOME environment variable to the home directory of the target user (root by default) as specified by the password database. Depending on the policy, this may be the default behavior.

-H gedit在您的情况下将设置$HOME变量以指向root(默认)而不是您的用户主目录。

相关内容