【问题标题】:How to execute cron job as non-root user under Ubuntu inside Docker如何在 Docker 内的 Ubuntu 下以非 root 用户身份执行 cron 作业
【发布时间】:2020-05-16 14:54:36
【问题描述】:

这是我正在尝试创建的图像的 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

当我构建和执行映像时,只有在 root 下执行的作业会提供一些输出。 strace 没有太大帮助。有什么想法吗?

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

【问题讨论】:

    标签: docker ubuntu cron


    【解决方案1】:

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

    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 下执行东西。

    【讨论】:

      猜你喜欢
      • 2019-03-17
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多