我正在尝试使用基于高山的操作系统构建cassandra docker映像。在容器运行过程中,由于我以cassandra用户身份运行,因此我遇到了与权限相关的问题。我无法运行sudo并将用户cassandra切换为sudo用户。下面是我的示例docker文件,仅显示sudo用户相关的逻辑-
FROM alpine:latest
RUN apk --no-cache update \
&& apk --no-cache add sudo
copy run.sh /usr/local/
RUN addgroup -S cassandra && adduser -S cassandra -G cassandra
RUN chown -R cassandra:cassandra /home/cassandra/
RUN echo 'cassandra ALL=(ALL) /bin/su' >> /etc/sudoers
USER cassandra
ENTRYPOINT [ "sh","/usr/local/run.sh"]
登录到容器后,我无法执行任何与sudo相关的任务。
首先,您不需要为新创建的用户分配root权限,这会破坏用户的意图。
因此,您无需将用户更改为root
用户,可以使用root
用户在运行容器中运行命令。
docker exec -it --user root mycontainer sh
或在Dockerfile中
USER root
# Run root operation here
# Change user back to cassandra
USER cassandra
顺便说一句,您可以使用以下命令创建root用户
Dockerfile
RUN adduser -D $USER \
&& echo "$USER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/$USER \
&& chmod 0440 /etc/sudoers.d/$USER
USER $USER
WORKDIR $HOME
RUN whoami
RUN sudo whoami
生成输出
Step 9/11 : RUN whoami
---> Running in d52065213d2d
default
Removing intermediate container d52065213d2d
---> c1b526ea8342
Step 10/11 : RUN sudo whoami
---> Running in 5f4ddd11a5f2
root