Командами є adduser
і addgroup
.
Ось шаблон для Docker, який ви можете використовувати в середовищах зайнятості (альпійські), а також в середовищах на базі Debian (Ubuntu тощо):
ENV USER=docker
ENV UID=12345
ENV GID=23456
RUN adduser \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--ingroup "$USER" \
--no-create-home \
--uid "$UID" \
"$USER"
Зверніть увагу на таке:
--disabled-password
запобігає запит на введення пароля - -
--gecos ""
обходить запит "Повне ім'я" тощо в системах на базі Debian
--home "$(pwd)"
встановлює для користувача дім WORKDIR. Ви можете цього не хотіти.
--no-create-home
запобігає копіюванню копій в каталог з /etc/skel
В описі використання цих програм відсутні довгі прапорці, присутні в коді adduser та addgroup .
Наступні прапори довгої форми повинні працювати як в альпійській, так і в похідних від debian:
adduser
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
Зауважимо одне: якщо --ingroup
не встановлено, тоді GID призначається відповідно до UID. Якщо GID, що відповідає наданому UID, вже існує, adduser не вдасться.
addgroup
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
Я виявив усе це, намагаючись написати власну альтернативу проекту fixuid для запуску контейнерів як UID / GID хостів.
Мій допоміжний скрипт точки входу можна знайти на GitHub.
Намір полягає у додаванні цього сценарію як першого аргументу, до ENTRYPOINT
якого Docker повинен зробити висновок UID та GID із відповідного монтування прив'язки.
Змінна середовища "ШАБЛОН" може знадобитися, щоб визначити, звідки слід виводити дозволи.
(На момент написання статті я не маю документації для свого сценарію. Він все ще в списку завдань !!)
USER 405
який є запрошеним користувачем в Alpine Linux.