Solusi 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
Jadi, coba ini:
# useradd -K MAIL_DIR=/dev/null nomailuser
Sebuah peringatan akan muncul (Membuat file kotak surat:Bukan direktori ), tetapi Anda dapat mengabaikannya.
Solusi 2:
Saya sedang menyiapkan gambar Docker dengan paket Alpine dan shadow dan mendapatkan kesalahan yang sama.
Untuk menghindari "Membuat file kotak surat:Tidak ada file atau direktori" ini kesalahan Saya harus menambahkan pengganti inline berikut sebelum mencoba menambahkan pengguna:
RUN sed -i 's/^CREATE_MAIL_SPOOL=yes/CREATE_MAIL_SPOOL=no/' /etc/default/useradd
Ini adalah arahan Dockerfile . Jika Anda kesulitan dengan host yang sudah berjalan, cukup edit file /etc/default/useradd dan ubah pengaturannya. Perubahan ini akan mencegah kreasi pengguna lain membuat kotak suratnya dibuat.
Itu bukan perilaku yang diinginkan, Anda bisa membuat folder /var/mail dengan
[ -d /var/mail ] || mkdir /var/mail
Atau di Dockerfile:
RUN mkdir /var/mail
Semoga ini membantu.
Solusi 3:
Anehnya, jawabannya tidak. Saya baru saja membaca kode sumber dan tidak ada opsi untuk ini, meskipun ada solusi (semacam):maildirs tidak dibuat untuk akun sistem.
Jadi Anda bisa melakukan useradd -r -m
. Anda juga harus menentukan UID/GID secara manual, karena diambil dari rentang yang berbeda.