gpt4 book ai didi

docker - 如何在 Docker 内部的 Ubuntu 下以非 root 用户身份执行 cron 作业

转载 作者:行者123 更新时间:2023-12-02 19:52:03 24 4
gpt4 key购买 nike

这是我正在尝试创建的图像的 Dockerfile。非 root 用户正在模拟本地计算机上的主机用户。

FROM ubuntu:bionic
RUN apt-get -yqq update && apt-get -yqq install cron passwd openssl strace
RUN groupadd -g 1000 hostuser && useradd -l -u 1000 -m -s /bin/bash -p $(openssl passwd -1 test1) -g hostuser hostuser
COPY hello-cron /etc/cron.d/hello-cron
RUN sudo chmod 0644 /etc/cron.d/hello-cron
COPY hello-cron-root /etc/cron.d/hello-cron-root
RUN sudo chmod 0644 /etc/cron.d/hello-cron-root
RUN touch /var/log/cron.log
COPY cron.allow /etc/cron.allow
#CMD /usr/sbin/cron -L 15 && tail -f /var/log/cron.log
CMD strace /usr/sbin/cron -f -L 15

这是文件 hello-cron:
* * * * * hostuser echo "Hello World" >> /var/log/cron.log 2>&1


这是文件 hello-cron-root:
* * * * * root echo "Hello World Root" >> /var/log/cron.log 2>&1


这是文件 cron.allow:
hostuser


当我仅构建和执行图像时,在根目录下执行的作业会给出一些输出。 strace 没有太大帮助。有任何想法吗?

不幸的是,我不能使用 Alpine 或其他东西。我需要使用 Ubuntu Bionic 来完成这项工作。

最佳答案

到目前为止,这是此设置中唯一有效的方法:

FROM ubuntu:bionic
RUN apt-get -yqq update && apt-get -yqq install cron passwd openssl sudo
RUN groupadd -g 1000 hostuser && useradd -l -u 1000 -m -s /bin/bash -p $(openssl passwd -1 test1) -g hostuser hostuser
COPY hello-cron-root /etc/cron.d/hello-cron-root
RUN sudo chmod 0644 /etc/cron.d/hello-cron-root
RUN touch /var/log/cron.log
COPY cron.allow /etc/cron.allow
COPY hostuser-run /usr/local/bin/hostuser-run
RUN chmod +x /usr/local/bin/hostuser-run
CMD /usr/sbin/cron -L 15 && tail -f /var/log/cron.log

这是主机用户运行:

#!/usr/bin/env bash

sudo -H -s -u 'hostuser' echo "We are running as $USER"


这是文件 hello-cron-root:
* * * * * root /usr/local/bin/hostuser-run >> /var/log/cron.log 2>&1

总而言之 - 假设只有 root cron 作业在 docker 下工作,以便在不同用户下执行内容,请使用带有 sudo -u 的帮助脚本.

关于docker - 如何在 Docker 内部的 Ubuntu 下以非 root 用户身份执行 cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59995386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com