与标准环境相比,在Docker中使用'script'的'su'返回不同的结果

时间:2019-06-15 14:08:57

标签: linux bash docker ubuntu

我需要通过su请求某些命令,包括一行密码。 我找到了一个解决方案,它正在标准环境(Ubuntu)中运行(有关解决方案here的更多信息):

{ sleep 1; echo password; } | script -qc 'su -l user -c id' /dev/null | tail -n +2

但是我面临的问题是该解决方案不适用于Docker容器环境

Script在不等待echo的情况下终止了命令,结果我得到了:

su: Authentication failure

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

由于各种原因,通过su传递stdin的密码是有问题的:最大的原因可能是您的密码将出现在历史记录中。

您可以改为:

  • 以特定用户身份调用整个脚本,然后手动输入密码
  • 在适当的 NOPASSWD sudoers配置中使用sudo
  • 如果您使用的是docker,则只需在USER中设置Dockerfile