你可以在一个Docker容器中以root身份启动一个进程,而exec调用的默认用户是非root?
我基本上试图以root身份运行crond -f
,而默认用户是不同的。
由于它运行的crontabs使用图像上的其他文件的敏感信息,我想给这些文件的root权限,启动crond进程,然后切换到新创build的用户。 这样cronjobs将能够获得他们需要的信息,同时保护容器中的敏感文件不受任何可能获得exec访问权限的人员的影响。
已经尝试了几件事情:
USER root CMD ["./runCrons.sh"] USER newuser
但是这不会以root身份运行crond进程,而是以newuser身份运行。
如果有人有解决scheme,这将节省我一些挖掘和实验。
在构buildDocker镜像时,创build属于sudo组的用户,并允许运行所有sudo命令而不使用密码。
考虑下面的例子,用sudo pass创build名为myuser的用户名为test的docker镜像:
$ cat Dockerfile FROM debian:latest ENV user_name myuser RUN apt-get update RUN apt-get install -y sudo RUN useradd --create-home -s /bin/bash ${user_name} RUN echo "${user_name} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${user_name} WORKDIR /home/${user_name} USER ${user_name} CMD /bin/bash
然后build立图像:
docker build -t test
。
现在要修复标准用户的cron权限问题,请确保cron脚本上使用的所有命令都以sudo开头,如下所示。
CMD ["sudo ./runCrons.sh"]
由于使用sudo时没有密码,因此一切都应该正常执行,你应该很好。
- docker容器中的高山linux忽略shell脚本参数
- Docker alpine vm,访问主机的/ etc / hosts文件configuration
- 使用mysql-client从Alpine Docker映像内部通过SSL连接到Amazon RDS。 并validation证书
- 添加yaml扩展到使用官方阿尔卑斯山docker图像的PHP
- 在Docker高山上安装软件包时遇到不可满足的限制
- 如何在Docker的官方php-fpm-alpine图片上安装XDebug?
- 在ARM主机上使用qemu在Alpine / Docker上安装bash
- 如何将命令输出replace为string并将其附加到文件(在Docker中运行的Alpine Linux中)
- docker – 与Nginx合作是行不通的