【问题标题】:execute aws command in script with sudo使用 sudo 在脚本中执行 aws 命令
【发布时间】:2021-10-13 22:28:53
【问题描述】:

我正在使用sudo 运行bash 脚本并尝试了以下操作,但使用aws cp 得到以下错误。我认为问题在于脚本正在寻找不存在的/root 中的config。但是-E 不保留原始位置吗?是否有可以与aws cp 一起使用的选项来传递config 的位置。谢谢你:)。

sudo -E bash /path/to/.sh
   - inside of this script is `aws cp`

错误

The config profile (name) could not be found


I have also tried `export` the name profile and `source` the path to the `config`

【问题讨论】:

  • 你有没有试过把所有的都放在同一个目录下(脚本、要复制的文件等)?
  • 所以脚本是从一个目录调用的......在新目录上创建一堆并将所有新目录复制到aws。如果我不使用sudo aws cp 很好并且不会返回错误......问题是我需要sudo 来创建新目录。 $HOME/user/aws 中的原始 config 文件。谢谢你:)。
  • 新目录是否在受保护的路径中?在这种情况下,您不能将用户添加到同一个组吗?
  • 目录位于受保护的路径中,我认为无法将用户添加到同一组,但我会检查。除此之外还有其他选择吗?也许我可以export HOME=/root 并将$HOME/user/.aws 复制到/root/.aws,所以有两个带有凭据的目录。我不认为这会引起问题吗?谢谢你:)。
  • 是的,您也可以这样做,或者只是创建一个从 /root/.aws 到 /home/user/.aws 的符号链接

标签: bash amazon-web-services command-line-interface


【解决方案1】:

您可以像这样使用原始用户:

sudo -u $SUDO_USER aws cp ...

【讨论】:

    【解决方案2】:

    您也可以使用source 而不是bash 来运行脚本——使用source 将导致脚本在与您打开的终端窗口相同的shell 中运行,这将使相同的环境保持在一起(例如用户)- 老实说,@Philippe 的答案是更好、更正确的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多