adduser 做了哪些 useradd 不做的事情?

adduser 做了哪些 useradd 不做的事情?

除了更广泛的命令之外useradd,基于 Debian 的系统还包含一个附加adduser命令,它为添加用户和一些相关任务提供了更高级别的界面。其他 SE 站点上有各种问题/答案,详细介绍了这些命令之间的基本差异,例如:

大多数答案本质上说,它adduser为交互式添加用户提供了更好的界面,但没有详细说明adduser运行时与useradd.所以:

  1. 什么是adduser做什么而useradd不是做什么?
  2. 我需要使用哪些命令才能产生相同的结果?

答案1

首先,各自的手册页片段突出显示了两个命令之间的差异,并给出了一些有关正在发生的情况的指示。为了adduser

adduser 和 addgroup 根据命令行选项和 /etc/adduser.conf 中的配置信息将用户和组添加到系统中。它们是 useradd、groupadd 和 usermod 程序等低级工具的更友好的前端,默认情况下选择符合 Debian 策略的 UID 和 GID 值、创建具有骨架配置的主目录、运行自定义脚本和其他功能。

然后对于useradd

useradd 是一个用于添加用户的低级实用程序。在 Debian 上,管理员通常应该使用 adduser(8)。

进一步调查adduser表明,它是一个 perl 脚本,为以下命令提供高级接口,从而提供以下命令的一些功能:

  • useradd
  • groupadd
  • passwd- 用于添加/更改用户密码。
  • gpasswd- 用于添加/更改组密码。
  • usermod- 用于更改各种用户相关参数。
  • chfn- 用于添加/更改用户持有的附加信息。
  • chage- 用于更改密码到期信息。
  • edquota- 用于更改磁盘使用配额。

该命令的基本运行adduser如下:

adduser username

这个简单的命令将执行许多操作:

  1. 创建名为 的用户username
  2. 创建用户的主目录(默认为/home/username并将文件复制到/etc/skel其中)。
  3. 创建一个与用户同名的组并将用户放入其中。
  4. 提示用户输入密码。
  5. 提示用户输入更多信息。

useradd程序可以完成大部分任务,但是默认情况下它不会这样做,并且需要其他选项。一些信息需要更多命令:

useradd -m -U username
passwd username
chfn username

请注意,adduser确保创建的 UID 和 GID 符合Debian 政策。创建普通用户似乎useradd没问题,前提是UID_MIN/ UID_MAXin/etc/login.defs符合 Debian 政策。但问题是 Debian 为系统用户 UID 指定了一个特定范围,该范围似乎仅在 中受支持/etc/adduser.conf,因此天真地添加系统用户useradd而不在正确范围内指定 UID/GUID 可能会导致严重问题。

另一个常见用途adduser是简化将用户添加到组的过程。在这里,以下命令:

adduser username newgroup

相当于以下usermod命令:

usermod -a -G newgroup username

在这种情况下的主要缺点usermod是,忘记传递附加选项(即-a:)最终会在将用户添加到“newgroup”之前从所有组中删除用户(即:-G单独意味着“替换为”)。

但在这里使用的一个缺点adduser是您一次只能指定一组。

答案2

我遇到的一个显着差异(并且在此处的答案中没有看到)是创建系统用户的含义

useradd --system似乎暗示--shell /bin/bash,而adduser --system暗示--shell /usr/sbin/nologin,这就是我想要的。

因此,如果我既不需要 shell,又不需要主目录,我可以使用用户添加像这样

useradd --system --shell /usr/sbin/nologin foo

这导致例如以下条目/etc/passwd

foo:x:994:991::/home/foo:/usr/sbin/nologin

或者使用添加用户像这样

adduser --system --no-create-home foo

这导致例如以下条目/etc/passwd

foo:x:110:65534::/home/foo:/usr/sbin/nologin

另外,adduser不创建组(用户 110 在组 65534 中,又名没有组)。这接受的答案还提到了有关 (G)UID 的风险,所以我肯定会坚持添加用户

来源:在 Raspberry Pi 操作系统(基于 Debian Buster)上测试。

答案3

添加用户默认情况下,命令还会为系统用户创建一个 /home/user 目录,但您无法使用用户添加命令。 useradd 只为普通用户添加主目录,而不是系统用户。

答案4

系统管理员可以使用 useradd 执行任何可以使用 adduser 执行的操作。这里指出,您不能使用 useradd 为系统用户创建 /home/user 目录,但是您绝对可以通过修改 /etc/skel 中包含的文件来创建 /home/user 目录。 /etc/skel 包含最初用于填充新用户主目录的文件集。

相关内容