Автор Тема: Docker: пользователь в контейнере [решено]  (Прочитано 1391 раз)

Оффлайн w00zy

  • Участник
  • *
  • Сообщений: 15
Добрый день!
Спрашивал в телеге, был проигнорирован. :) Вопрос: почему в 11 платформе не могу создать пользователя  в контейнере при его сборке стандартным для этого образом: Dockerfile
FROM alt:p11

RUN true > /etc/security/limits.d/50-defaults.conf \
  && echo 'APT::Keep-Downloaded-Packages "false";' > /etc/apt/apt.conf.d/01-disable-cache.conf

RUN groupadd --gid 1000 builder && useradd --uid 1000 --gid builder --shell /bin/bash --create-home builder

USER builder
WORKDIR /home/builder

CMD ["/bin/bash"]

В ответ получаю :
1.287 useradd: failure while writing changes to /etc/tcb/builder/shadow
Пробовал до groupadd сделать RUN control passwd traditional, получил control: facility: passwd

Короче говоря, что я делаю не так. И как надо, именно в альте. Как получить образ с непривилегированным пользователем внутре?



« Последнее редактирование: 05.08.2025 06:54:04 от Skull »

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 598
Re: Docker: пользователь в контейнере
« Ответ #1 : 26.07.2025 15:14:23 »
почему в 11 платформе не могу создать пользователя  в контейнере при его сборке стандартным для этого образом
А что, в 10 платформе и более ранних таким способом пользователи создаются?

В ответ получаю :
1.287 useradd: failure while writing changes to /etc/tcb/builder/shadow
Команда useradd должна выполняться с правами рута, вестимо.

Как получить образ с непривилегированным пользователем внутре?
Попробовать поиск по слову docker по ссылке на вики вверху страницы?
« Последнее редактирование: 26.07.2025 15:20:50 от stranger573 »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 347
    • Домашняя страница
Re: Docker: пользователь в контейнере
« Ответ #2 : 26.07.2025 17:07:16 »
Какая среда: docker или podman? Какими командами запускаете, от какого пользователя? Настроен ли userns?
У нас всё работает.
Андрей Черепанов (cas@)

Оффлайн w00zy

  • Участник
  • *
  • Сообщений: 15
Re: Docker: пользователь в контейнере
« Ответ #3 : 29.07.2025 14:12:25 »
Извиняюсь, что с задержкой отвечаю, полевые работы.

Цитировать
Какая среда: docker или podman? Какими командами запускаете, от какого пользователя? Настроен ли userns?

Rootless docker.
Образ создаю как делал всегда, создаю Dockerfile и делаю (от своего пользователя) :
docker build .
Пользователь, конечно, в группе докера docker:x:945:w00zy
Dockerfile примитивный:

FROM alt:p11
#FROM ubuntu:latest

RUN true > /etc/security/limits.d/50-defaults.conf \
  && rm -f /etc/apt/sources.list.d/alt.list \
  && echo 'APT::Keep-Downloaded-Packages "false";' > /etc/apt/apt.conf.d/01-disable-cache.conf

RUN useradd -U -m  -s /bin/bash builder

ENV HOME=/home/builder
WORKDIR /home/builder

USER builder

CMD ["/bin/bash"]

Вот таким образом альт  в образ не собирается. Юбунта там для теста, она так собирается.

Если буду в докерфайле обновлять, доустанавливать компоненты, копировать, удалять, настраивать - без проблем делает все. Но пользователя добавить докер в контернере не может. Подозрение на Альтовский tcb (тем более именно на него и ругается) но да же попытка переключить control passwd traditional внутри контейнера при сборке не сработала. Видимо не туда смотрю.

Цитировать
Команда useradd должна выполняться с правами рута, вестимо.

useradd здесь выполняется в контексте докера. Мой докер rotless. Говорю же приведенный выше примитивный докерфайл собирает образ в убунтах-дебианах (альт 10) но у меня в 11 не собирается.

Я, таки, выдрал гланды через задний карман, собрав себе образ со всеми куртизантками и компиляторами с помощью mkimage-profiles, и сделав импорт
docker import docker-me-20250726-x86_64.tar alt-p11-dev:latestполучил желаемое (среду сборки для одиночных RPM, не загаживая дев пакетами основную систему).
Но так не правильно, что то упускаю и пришлось усложнять задачу.


Оффлайн w00zy

  • Участник
  • *
  • Сообщений: 15
Re: Docker: пользователь в контейнере
« Ответ #4 : 04.08.2025 13:59:12 »
Отвечу еще раз сам себе ;-D

Спасибо Skull
Какая среда: docker или podman?

За то, что упомянул podman. Раньше не обращал на него внимание, оказалось зря. Настроил его по вики, создал Containerfile :
FROM alt:p11

RUN true > /etc/security/limits.d/50-defaults.conf \
  && rm -f /etc/apt/sources.list.d/alt.list \
  && echo 'APT::Keep-Downloaded-Packages "false";' > /etc/apt/apt.conf.d/01-disable-cache.conf

COPY --chown=0:0 ./alt.list /etc/apt/sources.list.d/alt.list

RUN apt-get -y update && apt-get -y install su-exec sudo mc hasher rpm-build rpm-build-compat \
etersoft-build-utils git scons make gcc git tar unzip rpmlint rpm-utils

RUN groupadd --gid 1000 builder && useradd --uid 1000 --gid 1000 -m -s /bin/bash builder
RUN hasher-useradd builder  && \
rm -f /var/cache/apt/archives/*.rpm && \
mkdir -p /home/builder/.hasher && \
mkdir -p /home/builder/.gnupg && \
mkdir -p /home/builder/data

COPY ./config /home/builder/.hasher
COPY ./rpmmacros /home/builder/.rpmmacros
COPY ./RPM-GPG-KEY-pmanager /home/builder/RPM-GPG-KEY
COPY ./vimrc /home/builder/.vimrc
COPY ./gnupg /home/builder/.gnupg
COPY ./bash_history /home/builder/.bash_history
COPY ./bashrc /home/builder/.bashrc
COPY ./_readme.txt /home/builder/readme.txt

RUN rpm --import /home/builder/RPM-GPG-KEY && rm -f /home/builder/RPM-GPG-KEY && chown -R builder:builder /home/builder
RUN usermod -aG wheel builder && echo "builder ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/builder \
&& chmod 0400 /etc/sudoers.d/builder

ENV HOME=/home/builder
WORKDIR /home/builder

USER builder

CMD ["/bin/bash"]

Образ собрался,  «внутре  неонка» работает.