Как создать учетную запись linux с помощью useradd, не создавая почтовую папку

11

Резюме

Могу ли я создать нового пользователя без создания почтового спула и без изменения /etc/default/useradd?

Explaination

Я хочу создать пользователя с домашним каталогом и скелетом, но я не хочу, чтобы useraddскрипт добавлял почтовый файл в систему Unix.

Мой /etc/default/useraddфайл утверждает, что

CREATE_MAIL_SPOOL=yes

но я не хочу изменять поведение по умолчанию.

Сейчас я использую

useradd nomailuser
rm /var/spool/mail/nomailuser

Также я знаю о, -dно кажется, что я не могу найти вариант, чтобы не создавать почтовую папку .

Я думаю о том, есть ли возможность использовать пользовательский /etc/default/useraddфайл.

drinchev
источник

Ответы:

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

Итак, попробуйте это:

# useradd -K MAIL_DIR=/dev/null nomailuser

Появится предупреждение ( Создание файла почтового ящика: не каталог ), но вы можете проигнорировать.

кванты
источник
Спасибо, работает как брелок. Есть ли какая-то конкретная причина, -K CREATE_MAIL_SPOOL=noкоторая не работает вообще?
Дринчев
1
Потому что это не принадлежит /etc/login.defs.
кванты
@quanta, потому что -K MAIL_DIR=/dev/nullя получил ошибку:Creating mailbox file: Not a directory
Кирби
@drinchev, потому что -K CREATE_MAIL_SPOOL=noя получил ошибку configuration error - unknown item 'CREATE_MAIL_SPOOL' (notify administrator).
Кирби
Я получил тот же результат, что и Кирби ... Я использовал его для альпийского док-контейнера, поэтому я пошелecho "CREATE_MAIL_SPOOL no" >> /etc/default/useradd
Ади Ройбан
5

Я устанавливаю образ Docker с пакетом Alpine и shadow и получаю ту же ошибку.

Чтобы избежать этой ошибки «Создание файла почтового ящика: нет такого файла или каталога», мне пришлось добавить следующую встроенную замену, прежде чем пытаться добавить пользователя:

RUN sed -i 's/^CREATE_MAIL_SPOOL=yes/CREATE_MAIL_SPOOL=no/' /etc/default/useradd

Это директива Dockerfile . Если вы боретесь с уже работающим хостом, просто отредактируйте файл / etc / default / useradd и измените настройки соответствующим образом. Это изменение помешает любому другому создателю пользователя получить свой почтовый ящик.
Если это нежелательное поведение, вы можете просто создать папку / var / mail с

[ -d /var/mail ] || mkdir /var/mail

Или в Dockerfile:

RUN mkdir /var/mail 

Надеюсь, это помогло.

Гастон Мартин
источник
3

Как ни странно, ответ - нет. Я только что прочитал исходный код, и для этого нет возможности, хотя есть обходной путь (своего рода): maildirs не создаются для системных учетных записей.

Так что вы можете сделать useradd -r -m. Вы также должны будете указать UID / GID вручную, так как они выбираются из разных диапазонов.

Деннис Каарсемакер
источник