Solution 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
Alors, essayez ceci :
# useradd -K MAIL_DIR=/dev/null nomailuser
Un avertissement apparaîtrait (Création d'un fichier de boîte aux lettres :pas un répertoire ), mais vous pouvez ignorer.
Solution 2 :
Je configure une image Docker avec le package Alpine et shadow et j'ai la même erreur.
Pour éviter ce "Création d'un fichier de boîte aux lettres :aucun fichier ou répertoire de ce type" J'ai dû ajouter le remplacement en ligne suivant avant d'essayer d'ajouter un utilisateur :
RUN sed -i 's/^CREATE_MAIL_SPOOL=yes/CREATE_MAIL_SPOOL=no/' /etc/default/useradd
Ceci est une directive Dockerfile . Si vous rencontrez des difficultés avec un hôte déjà en cours d'exécution, modifiez simplement le fichier /etc/default/useradd et modifiez le paramètre en conséquence. Cette modification empêcherait toute autre création d'utilisateur de créer sa boîte aux lettres.
Si ce n'est pas le comportement souhaité, vous pouvez simplement créer le dossier /var/mail avec
[ -d /var/mail ] || mkdir /var/mail
Soit dans le Dockerfile :
RUN mkdir /var/mail
J'espère que cela a aidé.
Solution 3 :
Curieusement, la réponse est non. Je viens de lire le code source et il n'y a pas d'option pour cela, bien qu'il existe une solution de contournement (en quelque sorte) :les maildirs ne sont pas créés pour les comptes système.
Vous pouvez donc faire useradd -r -m
. Vous devrez également spécifier un UID/GID manuellement, car ils sont sélectionnés dans différentes plages.