Polecenia to adduser
i addgroup
.
Oto szablon dla Dockera, którego możesz używać w środowiskach busybox (alpine), a także w środowiskach opartych na Debianie (Ubuntu itp.):
ENV USER=docker
ENV UID=12345
ENV GID=23456
RUN adduser \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--ingroup "$USER" \
--no-create-home \
--uid "$UID" \
"$USER"
Zwróć uwagę na następujące kwestie:
--disabled-password
zapobiega pytaniu o hasło
--gecos ""
omija monit o wpisanie „Full Name” itp. w systemach opartych na Debianie
--home "$(pwd)"
ustawia dom użytkownika na WORKDIR. Możesz tego nie chcieć.
--no-create-home
zapobiega kopiowaniu cruft do katalogu z /etc/skel
W opisie użycia tych aplikacji brakuje długich flag obecnych w kodzie dla adduser i addgroup .
Następujące flagi o długiej formie powinny działać zarówno w pochodnych alpejskich, jak i debianowych:
Dodaj użytkownika
BusyBox v1.28.4 (2018-05-30 10:45:57 UTC) multi-call binary.
Usage: adduser [OPTIONS] USER [GROUP]
Create new user, or add USER to GROUP
--home DIR Home directory
--gecos GECOS GECOS field
--shell SHELL Login shell
--ingroup GRP Group (by name)
--system Create a system user
--disabled-password Don't assign a password
--no-create-home Don't create home directory
--uid UID User id
Należy zauważyć, że jeśli --ingroup
nie jest ustawiony, GID jest przypisywany tak, aby pasował do UID. Jeśli GID odpowiadający podanemu UID już istnieje, adduser nie powiedzie się.
Dodaj grupę
BusyBox v1.28.4 (2018-05-30 10:45:57 UTC) multi-call binary.
Usage: addgroup [-g GID] [-S] [USER] GROUP
Add a group or add a user to a group
--gid GID Group id
--system Create a system group
Wszystko to odkryłem, próbując napisać własną alternatywę dla projektu fixuid do uruchamiania kontenerów jako UID / GID hosta.
Mój skrypt pomocniczy punktu wejścia można znaleźć na GitHub.
Intencją jest dołączenie tego skryptu jako pierwszego argumentu, ENTRYPOINT
który powinien spowodować, że Docker wywnioskuje UID i GID z odpowiedniego montowania powiązania.
Do określenia, skąd należy wywnioskować uprawnienia, może być wymagana zmienna środowiskowa „TEMPLATE”.
(W chwili pisania tego tekstu nie mam dokumentacji do mojego skryptu. Nadal jest na liście rzeczy do zrobienia !!)
USER 405
który jest użytkownikiem gościa w Alpine Linux.