概括
我可以在不创建邮件缓冲池且不修改的情况下创建新用户吗/etc/default/useradd
?
说明
我想创建一个具有主目录和骨架的用户,但我不希望脚本useradd
将邮件假脱机文件添加到 unix 系统。
我的/etc/default/useradd
文件指出
CREATE_MAIL_SPOOL=yes
但我不想修改默认行为。
现在我正在使用
useradd nomailuser
rm /var/spool/mail/nomailuser
我也知道,-d
但似乎我找不到没有创建邮件池。
我在考虑是否有使用自定义/etc/default/useradd
文件的选项。
答案1
-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
将出现警告(创建邮箱文件:不是目录),但你可以忽略。
答案2
我正在使用 Alpine 和 shadow 包设置 Docker 映像并出现同样的错误。
为了避免这种情况“创建邮箱文件:没有此文件或目录”错误我必须在尝试添加用户之前添加以下内联替换:
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
奇怪的是,答案是否定的。我刚刚阅读了源代码,没有这个选项,尽管有一种解决方法(有点):不会为系统帐户创建 maildir。
所以你可以这样做useradd -r -m
。不过你还必须手动指定 UID/GID,因为它们是从不同的范围中选择的。