Comment créer un compte Linux avec useradd sans créer de spool de messagerie

11

Résumé

Puis-je créer un nouvel utilisateur sans créer de spool mail et sans modification de /etc/default/useradd?

Explication

Je veux créer un utilisateur qui a un répertoire personnel et un squelette, mais je ne veux pas que le useraddscript ajoute un fichier de spool mail au système Unix.

Mon /etc/default/useradddossier indique que

CREATE_MAIL_SPOOL=yes

mais je ne veux pas modifier le comportement par défaut.

Pour l'instant j'utilise

useradd nomailuser
rm /var/spool/mail/nomailuser

Je le sais aussi, -dmais il semble que je ne trouve pas d'option pour ne pas créer de bobine de courrier .

Je pense à la possibilité d'utiliser un /etc/default/useraddfichier personnalisé .

drinchev
la source

Réponses:

9

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 l'ignorer.

quanta
la source
Merci, fonctionne comme un charme. Y a-t-il une raison spécifique qui -K CREATE_MAIL_SPOOL=none fonctionne pas du tout?
drinchev
1
Parce qu'il n'appartient pas à /etc/login.defs.
quanta
@quanta, car -K MAIL_DIR=/dev/nullj'ai une erreur:Creating mailbox file: Not a directory
Kirby
@drinchev, car -K CREATE_MAIL_SPOOL=noj'ai eu une erreur configuration error - unknown item 'CREATE_MAIL_SPOOL' (notify administrator).
Kirby
J'ai obtenu le même résultat que Kirby ... Je l'utilisais pour un conteneur de docker alpin alors je suis allé avececho "CREATE_MAIL_SPOOL no" >> /etc/default/useradd
Adi Roiban
5

Je configure une image Docker avec Alpine et le package shadow et j'ai la même erreur.

Pour éviter cette erreur «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

Il s'agit d'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

Ou dans le Dockerfile:

RUN mkdir /var/mail 

J'espère que cela vous a aidé.

Gaston Martin
la source
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 le faire useradd -r -m. Vous devrez également spécifier un UID / GID manuellement, car ils sont choisis dans différentes plages.

Dennis Kaarsemaker
la source