Запустить контейнер от имени пользователя без полномочий root, но запустить службу от имени пользователя root?Linux

Ответить Пред. темаСлед. тема
Anonymous
 Запустить контейнер от имени пользователя без полномочий root, но запустить службу от имени пользователя root?

Сообщение Anonymous »

Я пытаюсь создать уязвимое докеризованное веб-приложение для тестирования, используя vsftpd 2.3.4.
Мой Dockerfile выглядит следующим образом:

Код: Выделить всё

# For more information, please refer to https://aka.ms/vscode-docker-python
FROM python:3.12-slim

EXPOSE 5002

# Keeps Python from generating .pyc files in the container
ENV PYTHONDONTWRITEBYTECODE=1

# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1

# Install pip requirements
COPY requirements.txt .
RUN python -m pip install -r requirements.txt

# Install vsftpd 2.3.4
RUN apt-get update -y && apt-get install -y git
WORKDIR /root/
RUN git clone https://github.com/Anon-Exploiter/vulnerable-packages && \
cd vulnerable-packages && \
cd backdoored-vsftpd-2.3.4 && \
mv * /root/ && \
cd /root && \
rm -rfv vulnerable-packages
RUN apt-get purge -y git && \
apt-get -y autoclean && \
apt-get -y autoremove && \
apt-get -y clean
RUN mkdir /usr/share/empty/ && \
mkdir /var/ftp/ && \
useradd -d /var/ftp ftp
RUN chown root:root /var/ftp && \
chmod og-w /var/ftp
RUN mv vsftpd /usr/local/sbin/vsftpd && \
mv vsftpd.conf /etc/
RUN echo 'echo Started FTP Server@ `hostname -i 2>/dev/null`:21' > /root/run.sh && \
echo "/usr/local/sbin/vsftpd" >> /root/run.sh
# CMD ["/bin/bash", "-c", "/bin/bash run.sh"]

WORKDIR /app
COPY . /app

# Creates a non-root user with an explicit UID and adds permission to access the /app folder
# For more info, please refer to https://aka.ms/vscode-docker-python-configure-containers
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
# CMD ["gunicorn", "--bind", "0.0.0.0:5002", "__init__:app"]

COPY scripts/start.sh .
USER root
RUN chmod +x start.sh
RUN chmod +x /root/run.sh
USER appuser
CMD ["/bin/bash", "-c", "./start.sh"]
... и start.sh выглядит так:

Код: Выделить всё

#!/bin/bash
/bin/bash /root/run.sh
gunicorn --bind 0.0.0.0:5002 __init__:app
Я всегда получаю сообщение об ошибке run.sh: разрешение запрещено после запуска контейнера, поскольку run.sh требует привилегий root для запуска службы vsftpd, но контейнер пользователь — appuser.
Однако я не хочу переключаться на root для запуска контейнера.
Есть ли решение запустить службу vsftpd от имени пользователя root, но запустить контейнер от имени пользователя без полномочий root?

Изменить: если я удалю USER appuser из второго последняя строка, все будет работать нормально.

Подробнее здесь: https://stackoverflow.com/questions/783 ... ce-as-root
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»