как сделать не root пользователя как пользователя sudo в docker альпийском образе? - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь собрать изображение Кассандры docker, используя альпийскую ОС. в процессе запуска контейнера я получаю проблему, связанную с разрешениями, так как я работаю как пользователь cassandra. я не могу запустить sudo и переключить моего пользователя cassandra как пользователя sudo. ниже приведен пример файла docker, в котором показаны только логи, связанные с пользователем sudo c -

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.

1 Ответ

0 голосов
/ 16 марта 2020

Во-первых, вам не нужно назначать 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
...