Security 如何设置将所有环境变量从根用户复制到另一个特定用户

Security 如何设置将所有环境变量从根用户复制到另一个特定用户,security,docker,environment-variables,Security,Docker,Environment Variables,在我的docker容器中,我以特定用户的身份运行一个命令,如从entrypoint.sh: sudo-u appuser“$@” 这很好,但是,它不会设置在运行容器时使用--link选项创建的任何环境变量 问题 是否可以将根用户的所有环境变量设置为其他特定用户(在本例中为appuser) 注:与本次讨论相关的问题。这就是为什么我不能只使用用户命令sudo命令的原因,因为它被设计为权限提升的工具,在切换到新的用户id之前故意清理环境。如果您查看sudo手册页,您会发现: 因此,不要使用sudo-u

在我的docker容器中,我以特定用户的身份运行一个命令,如从
entrypoint.sh

sudo-u appuser“$@”

这很好,但是,它不会设置在运行容器时使用
--link
选项创建的任何环境变量

问题

是否可以将根用户的所有环境变量设置为其他特定用户(在本例中为
appuser


注:与本次讨论相关的问题。这就是为什么我不能只使用
用户
命令

sudo命令的原因,因为它被设计为权限提升的工具,在切换到新的用户id之前故意清理环境。如果您查看
sudo
手册页,您会发现:

因此,不要使用
sudo-u appuser somecommand
,只需使用
sudo-E-u appuser somecommand

在Ubuntu的最新版本中,
runuser
命令由
util linux
包提供,默认情况下不执行任何环境初始化。例如:

$ docker pull ubuntu
$ docker run -it --rm ubuntu /bin/bash
root@ded49ffde72e:/# runuser --help

Usage:
 runuser [options] -u <user> <command>
 runuser [options] [-] [<user> [<argument>...]]
[...]
$docker pull ubuntu
$docker run-it--rm ubuntu/bin/bash
root@ded49ffde72e:/#运行用户--帮助
用法:
运行用户[选项]-u
运行用户[选项][-][[…]]
[...]
这是Ubuntu Xenial(但是
runuser
命令似乎在
Ubuntu:vivid
上可用,但在
Ubuntu:trusty
下不可用)

因此,您的选择是:

  • 使用
    sudo-E
    ,或
  • 使用较新的Ubuntu映像

感谢您将此作为一个新问题,而不是将其他答案变成一条巨大的评论线索!我回来回答我自己的问题,但你对我来说太快了<代码>-E救命!
$ docker pull ubuntu
$ docker run -it --rm ubuntu /bin/bash
root@ded49ffde72e:/# runuser --help

Usage:
 runuser [options] -u <user> <command>
 runuser [options] [-] [<user> [<argument>...]]
[...]