我有一个centos7 docker容器,它是作为非root用户运行。我安装了cronie,并从容器入口点。sh以非root用户的身份启动了crond
entryoint。sh
#!/bin/bash
sleep 2h
我登录到容器并在调试模式下手动运行crontab
crond -x ext
我Dockerfile
FROM centos:7
RUN groupadd rsuser -g 10001
RUN useradd -d /home/rsuser -m rsuser -u 10001 -g 10001 -p rsuser
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
RUN yum install -y cronie && yum clean all
RUN touch /var/run/crond.pid
RUN echo '* * * * * root echo "crontab running"' >> /etc/crontab
RUN setcap cap_setgid+ep /usr/sbin/crond && \
setcap cap_setuid+ep /usr/sbin/crond
RUN chown -R rsuser:rsuser /var/run/crond.pid
RUN chmod 400 /etc/shadow
USER 10001
ENTRYPOINT ["/entrypoint.sh"]
如果我以root身份运行crontab命令,那么我得到以下错误
* * * * * root echo "crontab running"
log_it: (CRON 23) ERROR (setgid failed): Operation not permitted
如果我运行crontab命令作为rsuser然后我得到以下错误
* * * * * rsuser echo "crontab running"
log_it: (CRON 23) ERROR (initgroups failed): Operation not permitted
找不到解决的办法。