Řešení 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
Takže zkuste toto:
# useradd -K MAIL_DIR=/dev/null nomailuser
Zobrazí se varování (Vytváří se soubor poštovní schránky:Není adresář ), ale můžete je ignorovat.
Řešení 2:
Nastavuji obrázek Docker s balíčkem Alpine a shadow a mám stejnou chybu.
Chcete-li se tomuto vyhnout "Vytváření souboru poštovní schránky:Žádný takový soubor nebo adresář" chyba Před pokusem o přidání uživatele jsem musel přidat následující náhradu:
RUN sed -i 's/^CREATE_MAIL_SPOOL=yes/CREATE_MAIL_SPOOL=no/' /etc/default/useradd
Toto je direktiva Dockerfile . Pokud se potýkáte s již běžícím hostitelem, stačí upravit soubor /etc/default/useradd a příslušně změnit nastavení. Tato změna by zabránila vytvoření poštovní schránky jakéhokoli jiného uživatele.
Pokud to není požadované chování, stačí vytvořit složku /var/mail pomocí
[ -d /var/mail ] || mkdir /var/mail
Nebo v Dockerfile:
RUN mkdir /var/mail
Doufám, že to pomohlo.
Řešení 3:
Kupodivu je odpověď ne. Právě jsem si přečetl zdrojový kód a neexistuje pro to žádná možnost, i když existuje (nějaké) řešení:maildrs se nevytvářejí pro systémové účty.
Takže můžete udělat useradd -r -m
. UID/GID však budete muset zadat také ručně, protože jsou vybírány z různých rozsahů.