解決策 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
だから、これを試してください:
# useradd -K MAIL_DIR=/dev/null nomailuser
警告が表示されます (Creating mailbox file:Not a directory ) ですが、無視してかまいません。
解決策 2:
Alpine とシャドウ パッケージを使用して Docker イメージをセットアップしていますが、同じエラーが発生しました。
この「メールボックス ファイルを作成しています:そのようなファイルまたはディレクトリはありません」を回避するには エラー ユーザーを追加する前に、次のインライン置換を追加する必要がありました:
RUN sed -i 's/^CREATE_MAIL_SPOOL=yes/CREATE_MAIL_SPOOL=no/' /etc/default/useradd
これは Dockerfile ディレクティブです .すでに実行中のホストに問題がある場合は、/etc/default/useradd ファイルを編集して、それに応じて設定を変更してください。この変更により、他のユーザーが作成したメールボックスが作成されなくなります。
望ましい動作ではない場合は、
[ -d /var/mail ] || mkdir /var/mail
または Dockerfile で:
RUN mkdir /var/mail
これが役に立ったことを願っています。
解決策 3:
奇妙なことに、答えはノーです。ソースコードを読んだだけで、これに対するオプションはありませんが、(一種の) 回避策があります:メールディレクトリはシステム アカウント用に作成されません。
だからあなたは useradd -r -m
をすることができます .ただし、異なる範囲から選択されるため、UID/GID も手動で指定する必要があります。