Les commandes sont adduser
et addgroup
.
Voici un modèle pour Docker que vous pouvez utiliser dans les environnements busybox (alpin) ainsi que dans les environnements basés sur Debian (Ubuntu, etc.):
ENV USER=docker
ENV UID=12345
ENV GID=23456
RUN adduser \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--ingroup "$USER" \
--no-create-home \
--uid "$UID" \
"$USER"
Notez ce qui suit:
--disabled-password
empêche l'invite de mot de passe
--gecos ""
contourne l'invite "Nom complet" etc. sur les systèmes basés sur Debian
--home "$(pwd)"
définit le domicile de l'utilisateur sur WORKDIR. Vous ne voudrez peut-être pas cela.
--no-create-home
empêche la copie de cruft dans le répertoire de /etc/skel
La description d'utilisation de ces applications ne contient pas les indicateurs longs présents dans le code pour adduser et addgroup .
Les indicateurs de forme longue suivants devraient fonctionner à la fois dans les dérivés alpins et 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
Une chose à noter est que s'il --ingroup
n'est pas défini, le GID est attribué pour correspondre à l'UID. Si le GID correspondant à l'UID fourni existe déjà, adduser échouera.
ajouter un groupe
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
J'ai découvert tout cela en essayant d'écrire ma propre alternative au projet fixuid pour exécuter des conteneurs en tant qu'UID / GID de l'hôte.
Mon script d'assistance de point d'entrée peut être trouvé sur GitHub.
L'intention est d'ajouter ce script comme premier argument ENTRYPOINT
auquel Docker devrait déduire l'UID et le GID d'un montage de liaison pertinent.
Une variable d'environnement "TEMPLATE" peut être requise pour déterminer d'où les autorisations doivent être déduites.
(Au moment d'écrire ces lignes, je n'ai pas de documentation pour mon script. Il est toujours sur la liste des choses à faire !!)
USER 405
qui est l'utilisateur invité dans Alpine Linux.