【问题标题】:Preserve sudo environment [duplicate]保留sudo环境[重复]
【发布时间】:2023-04-03 03:56:01
【问题描述】:

我正在尝试使用 ssh 从不同的服务器执行脚本

这是我从服务器 1 用来在服务器 2 上启动查询的命令:

ssh -t user@xxx.xxx.xxx.xx "cd /var/www/vhosts/xxxxx/subdomains/preprod/; sudo ./replace.sh";

但问题是当我执行sudo $home = /root 而脚本位于:/var/www/vhosts/xxxxx/subdomains/preprod/

我如何告诉 sudo 保护环境?

我尝试了sudo -P -sudo -H,但没有任何运气。

【问题讨论】:

  • replace.sh 是否使用执行它的路径?否则你可以做 sudo /var/www/vhosts/xxxxx/subdomains/preprod/replace.sh。
  • 感谢您抽出宝贵时间回答这个问题,它就是这样工作的。但我更想知道是否有一个参数可以传递给 sudo 以保持当前路径,而不是将其设置回 root ...

标签: ssh sudo


【解决方案1】:

这就是我从手册页得到的。

sudo -E

-E -E(保留环境)选项将覆盖 env_reset sudoers(5) 中的选项)。它只是 匹配时可用 命令具有 SETENV 标记或 setenv 选项在 sudoers(5) 中设置。

【讨论】:

  • 昨天也试过这个选项,但失败了:)
  • 显然,尽管 -E(尤其是在 Ubuntu 中,默认情况下会发生这种情况)作为安全问题,但仍然可以修改 PATH 环境变量。见stackoverflow.com/questions/257616/sudo-changes-path-why
  • @Tarek 使用 -E 可能会受到管理员的限制,因为 environemtn 变量可能会造成伤害。虽然在这种情况下 sudo 应该返回一个明确的声明说:你不能使用 -E。如果它只是静默失败,您将遇到不同的问题。
猜你喜欢
  • 2012-01-27
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
相关资源
最近更新 更多