如何使用 useradd 创建 Linux 账户而不创建邮件池

如何使用 useradd 创建 Linux 账户而不创建邮件池

概括

我可以在不创建邮件缓冲池且不修改的情况下创建新用户吗/etc/default/useradd

说明

我想创建一个具有主目录和骨架的用户,但我不希望脚本useradd将邮件假脱机文件添加到 unix 系统。

我的/etc/default/useradd文件指出

CREATE_MAIL_SPOOL=yes

但我不想修改默认行为。

现在我正在使用

useradd nomailuser
rm /var/spool/mail/nomailuser

我也知道,-d但似乎我找不到没有创建邮件池

我在考虑是否有使用自定义/etc/default/useradd文件的选项。

答案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

将出现警告(创建邮箱文件:不是目录),但你可以忽略。

答案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,因为它们是从不同的范围中选择的。

相关内容