当前位置: 首页 > 知识库问答 >
问题:

您是否可以在Docker容器中以root身份启动进程,同时让exec调用的默认用户是非root用户?

松英喆
2023-03-14

我基本上是试图以root用户身份运行crond-f,而默认用户则有所不同。

由于它运行的crontabs使用图像上其他文件的敏感信息,我想让root访问这些文件,启动crond进程,然后将用户切换到新创建的文件。通过这种方式,cronJobs将能够获得他们需要的信息,同时保护容器中的敏感文件免受任何可能获得exec访问权限的人的攻击。

尝试过这样的几件事:

USER root

CMD ["./runCrons.sh"]

USER newuser

但这并不是以root身份运行crond进程,而是以newuser身份运行。

如果有人有解决办法,我会省去一些挖掘和实验。

共有1个答案

文自怡
2023-03-14

在构建Docker映像时,创建一个属于sudo组的用户,该用户可以在不使用密码的情况下运行所有sudo命令。

考虑下面的示例,创建一个名为test的DOCKER图像,用户名为MyUSER,SUDO PASS:

$ 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

然后构建图像:

docker build-t测试

现在要解决标准用户的cron权限问题,请确保cron脚本上使用的所有命令都以sudo开头,如下所示。

CMD[“sudo./runCrons.sh”]

因为使用sudo时不需要密码,所以一切都应该执行得很好,你应该可以走了。

 类似资料:
  • 本文向大家介绍以非root用户身份运行Docker容器,包括了以非root用户身份运行Docker容器的使用技巧和注意事项,需要的朋友参考一下 当您在Docker容器中运行应用程序时,默认情况下,它有权访问所有root特权。您可能已经注意到,当打开Ubuntu Docker Container Bash时,默认情况下您以root用户身份登录。在应用程序的安全性方面,这可能是一个主要问题。任何局外人

  • 问题内容: 运行时默认 要么 您以root用户身份连接到终端,但是我想以其他用户身份连接。这可能吗? 问题答案: 对于: 在启动Docker容器时,只需添加选项即可更改为其他用户。 对于或: 由于该命令用于附加/执行到现有进程中,因此它直接在此使用当前用户。 如果您确实想附加到想要拥有的用户,那么 从该用户开始或在您的使用中提及它 使用`su更改用户

  • 我正在编写一个将在Linux服务器上运行的Java程序。程序需要以“root”的身份开始,做某种操作(读取文件),然后将自己降级为非root用户,在文件已经读取并关闭之后。 我通读了下面的问题,但还没有找到可行的解决方案--尤其是因为我处理的不是http端口。

  • 问题内容: 在构建Docker映像时,如何将文件添加到映像中,以便生成的文件由root以外的用户拥有? 问题答案: 对于v17.09.0-ce及更高版本 将可选标志与或命令一起使用。 例如 --chown标志的文档现在位于Dockerfile参考主页面上。 版本 34263 已被合并,可以在v17.09.0-ce版本中使用。 对于v17.09.0-ce之前的版本 Docker不以root用户身份支

  • 我使用Ansible安装了Nginx。要在Centos7上安装,我使用了yum软件包,因此默认情况下它是以root用户身份运行的。我希望它在Centos中以不同的用户(前nginx用户)身份启动和运行。当我尝试与其他用户一起运行时,会出现以下错误: nginx的工作。服务失败,因为控制进程已退出,错误代码为。有关详细信息,请参阅“systemctl status nginx.service”和“j

  • 问题内容: 在昨天的Shocker消息发布之后,似乎Docker容器中的应用程序不应以root用户身份运行。我尝试更新自己以创建应用程序用户,但是更改对应用程序文件的权限(虽然仍然是root)似乎不起作用。我猜这是因为未将某些LXC权限授予root用户? 这是我的Dockerfile: 很简单,但是当我一切仍然由root拥有时: 感谢@creak对卷的工作原理的澄清,我更新的dockerfile的