Lösung 1:
man useradd
-K, --key KEY=VALUE
Overrides /etc/login.defs defaults (UID_MIN, UID_MAX, UMASK, PASS_MAX_DAYS and others).
Example: -K PASS_MAX_DAYS=-1 can be used when creating system account to turn off password ageing, even though
system account has no password at all. Multiple -K options can be specified, e.g.: -K UID_MIN=100 -K UID_MAX=499
Versuchen Sie Folgendes:
# useradd -K MAIL_DIR=/dev/null nomailuser
Eine Warnung wird angezeigt (Postfachdatei wird erstellt:Kein Verzeichnis ), aber Sie können ignorieren.
Lösung 2:
Ich richte ein Docker-Image mit Alpine und Shadow-Paket ein und erhalte den gleichen Fehler.
Um dies zu vermeiden "Postfachdatei erstellen:Keine solche Datei oder Verzeichnis" error Ich musste die folgende Inline-Ersetzung hinzufügen, bevor ich versuchte, einen Benutzer hinzuzufügen:
RUN sed -i 's/^CREATE_MAIL_SPOOL=yes/CREATE_MAIL_SPOOL=no/' /etc/default/useradd
Dies ist eine Dockerfile-Direktive . Wenn Sie mit einem bereits laufenden Host Probleme haben, bearbeiten Sie einfach die Datei /etc/default/useradd und ändern Sie die Einstellung entsprechend. Diese Änderung würde verhindern, dass eine andere Benutzererstellung ihr Postfach erstellt bekommt.
Sollte dies nicht das gewünschte Verhalten sein, können Sie einfach den Ordner /var/mail mit
[ -d /var/mail ] || mkdir /var/mail
Oder im Dockerfile:
RUN mkdir /var/mail
Hoffe das hat geholfen.
Lösung 3:
Seltsamerweise lautet die Antwort nein. Ich habe gerade den Quellcode gelesen und es gibt keine Option dafür, obwohl es eine Art Workaround gibt:Maildirs werden nicht für Systemkonten erstellt.
Sie können also useradd -r -m
ausführen . Sie müssen eine UID/GID jedoch auch manuell angeben, da sie aus verschiedenen Bereichen ausgewählt werden.