Useradd vs Adduser:有什么区别?

在 Linux 中创建新用户时,您可以选择使用 adduser 或 useradd 命令。

那么 useradd 和 adduser 命令有什么区别呢? 其中一个比另一个更好吗? 你应该使用哪一个? 用户添加 或者 添加用户?

adduser 和 useradd 命令的区别

Useradd 是内置的 Linux 命令,可以在任何 Linux 系统上找到。 但是,使用这种低级别创建新用户是一项乏味的任务,因为默认情况下它不会创建主目录和用户密码。

Adduser 不是标准的 Linux 命令。 它本质上是一个在后台使用 useradd 命令的 Perl 脚本。 这个高级实用程序更有效地在 Linux 上正确创建新用户。 它为您提供了创建主目录、设置密码以及更多参数的选项。

让我们看看这两个命令以及它们如何在 Linux 中创建用户。

用户添加命令

首先,让我们看一下 useradd 命令的默认行为。 你有没有运行过以下命令?

useradd new_user

我还没有看到这个命令创建了一个完整的用户帐户的发行版。 即使在为新用户设置密码之后,您也需要使用其他选项。

为了 example,在我的系统上,上面的命令在 /etc/passwd 文件中添加了以下条目。

useradd 创建具有奇怪设置的用户

如果您阅读了有关在 Linux 上列出用户的文章,您可能已经熟悉 /etc/passwd 文件的内容。 一开始看起来不错,但如果你开始挖掘,你很快就会发现有些地方不太对劲。

首先,第二个字段包含“x”。 这意味着密码信息的占位符在 /etc/shadow 中。 但是我没有设置密码。 这意味着测试用户将无法登录。

第二,主目录。 问题是 /home/test 不存在。 即使您设置了密码,如果用户登录也会出现错误。根据其他配置,您的 Linux 系统可能会阻止没有有效主目录的用户登录。 最有可能的是,至少在文本模式下,用户 test 将被允许登录您的系统。 但是用户 test 将不允许创建他的主目录。

三、默认登录shell是sh,不是 bash. 我不使用 sh 作为外壳。 你可能也不会,因为 bash 是大多数 Linux 发行版的默认 shell。

虽然可以通过编辑 /etc/login.defs 稍微修改 useradd 的行为,但上述命令几乎不可能创建完整的用户帐户。 Useradd 是一个低级实用程序。 尽管如此,查看 /etc/login.defs 中的设置还是很有用的。

添加用户命令

Adduser 命令在某些 Linux 发行版上不可用。 在其他情况下,它是指向 useradd 的软链接。 而在其他一些人身上,它是一个 Perl 脚本。

Adduser 是一个交互式高级实用程序。 它使用低级实用程序 useradd 作为后端。 使用 adduser 命令时将使用 /etc/login.defs 中的设置。 在基于 Debian 的发行版上,即使是手册页也建议使用它而不是 useradd 命令。

仅使用用户名调用 adduser 将引导您完成一系列问题。

回答几个问题后,将创建一个带有主目录的完整用户帐户。 新用户已准备好通过您的登录管理器或文本模式登录。

要使用低级实用程序 useradd 完成几乎相同的结果,该命令类似于以下内容:

sudo useradd -d /home/test -m -s/bin/bash  -c FullName,Phone,OtherInfo test && passwd test

-C 选项可以毫无问题地删除,后面的逗号分隔列表是添加到 /etc/passwd 的注释。 但即便如此, adduser 也会为您节省两个额外的命令。

Adduser 命令有一个可供您使用的选项列表。 这是我认为最有用的简短列表。 有关详细信息,请参阅帮助或手册页。

  • system:添加系统用户。 默认情况下,系统用户被放置在 nogroup 组中。 要将系统用户添加到现有组,请提供 –gid 或 –ingroup 选项。
  • home DIR:使用 DIR 作为主目录而不是默认目录。 如果需要,将创建目录并复制骨架文件。
  • shell SHELL:使用 SHELL 代替默认值。
  • ingroup GROUP:将用户的主要组设置为 GROUP
  • add_extra_groups:将新用户添加到配置文件中定义的额外组。

Adduser 的配置文件允许您设置创建帐户时要使用的默认值。 该文件有据可查,可让您设置默认值,例如:

  • 默认外壳
  • 主目录
  • 额外组
  • 添加额外的组

结论

以我作为系统管理员的个人经验,adduser 在 Linux 中创建新用户方面要好得多。 我更喜欢 adduser 而不是 useradd 任何一天,我推荐同样的。

那你呢? adduser 和 useradd 之间你更喜欢哪一个?