Die Befehle sind adduser
und addgroup
.
Hier ist eine Vorlage für Docker, die Sie sowohl in Busybox-Umgebungen (alpine) als auch in Debian-basierten Umgebungen (Ubuntu usw.) verwenden können:
ENV USER=docker
ENV UID=12345
ENV GID=23456
RUN adduser \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--ingroup "$USER" \
--no-create-home \
--uid "$UID" \
"$USER"
Beachte das Folgende:
--disabled-password
verhindert die Aufforderung zur Eingabe eines Passworts
--gecos ""
umgeht die Aufforderung zur Eingabe von "Vollständiger Name" usw. auf Debian-basierten Systemen
--home "$(pwd)"
Setzt das Zuhause des Benutzers auf WORKDIR. Sie können dies nicht wollen.
--no-create-home
verhindert, dass Cruft von in das Verzeichnis kopiert wird /etc/skel
In der Verwendungsbeschreibung für diese Anwendungen fehlen die langen Flags im Code für Adduser und Addgroup .
Die folgenden Langform-Flags sollten sowohl in alpinen als auch in Debian-Derivaten funktionieren:
Nutzer hinzufügen
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
Zu beachten ist, dass --ingroup
die GID entsprechend der UID zugewiesen wird, wenn sie nicht festgelegt ist. Wenn die der angegebenen UID entsprechende GID bereits vorhanden ist, schlägt der Adduser fehl.
Gruppe hinzufügen
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
All dies habe ich entdeckt, als ich versucht habe, meine eigene Alternative zum Fixuid- Projekt zum Ausführen von Containern als Host-UID / GID zu schreiben .
Mein Hilfsskript für den Einstiegspunkt finden Sie auf GitHub.
Das Skript soll als erstes Argument vorangestellt werden, ENTRYPOINT
das Docker veranlassen soll, UID und GID von einem relevanten Bind-Mount abzuleiten.
Eine Umgebungsvariable "TEMPLATE" kann erforderlich sein, um zu bestimmen, woher die Berechtigungen abgeleitet werden sollen.
(Zum Zeitpunkt des Schreibens habe ich keine Dokumentation für mein Skript. Es ist immer noch auf der ToDo-Liste !!)
USER 405
ist der Gastbenutzer in Alpine Linux.