如何在不创建邮件池的情况下使用 useradd 创建 linux 帐户

dri*_*hev 12 linux user-accounts

概括

我可以在不创建邮件假脱机且不修改 的情况下创建新用户/etc/default/useradd吗?

说明

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

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

CREATE_MAIL_SPOOL=yes
Run Code Online (Sandbox Code Playgroud)

但我不想修改默认行为。

现在我正在使用

useradd nomailuser
rm /var/spool/mail/nomailuser
Run Code Online (Sandbox Code Playgroud)

我也知道,-d但似乎我找不到不创建邮件池的选项。

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

qua*_*nta 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
Run Code Online (Sandbox Code Playgroud)

所以,试试这个:

# useradd -K MAIL_DIR=/dev/null nomailuser
Run Code Online (Sandbox Code Playgroud)

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


小智 6

我正在使用 Alpine 和 shadow 包设置 Docker 映像并遇到相同的错误。

为了避免这个“创建邮箱文件:没有这样的文件或目录”错误,我必须在尝试添加用户之前添加以下内联替换:

RUN sed -i 's/^CREATE_MAIL_SPOOL=yes/CREATE_MAIL_SPOOL=no/' /etc/default/useradd
Run Code Online (Sandbox Code Playgroud)

这是一个 Dockerfile 指令。如果您正在为已经在运行的主机而苦苦挣扎,只需编辑 /etc/default/useradd 文件并相应地更改设置。此更改将阻止任何其他用户创建创建其邮箱。
这不是所需的行为,您可以使用以下命令创建 /var/mail 文件夹

[ -d /var/mail ] || mkdir /var/mail
Run Code Online (Sandbox Code Playgroud)

或者在 Dockerfile 中:

RUN mkdir /var/mail 
Run Code Online (Sandbox Code Playgroud)

希望这有帮助。