Useradd 与 Adduser:有什么区别

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

快速总结

Useradd 是内置的 Linux 命令,可以在任何 Linux 系统上找到。 但是,创建具有这种低级别的新用户是一项繁琐的任务。

Adduser 不是标准的 Linux 命令。 它本质上是一个在后台使用 useradd 命令的 Perl 脚本。 这个高级实用程序在 Linux 上正确创建新用户时更有效。 所有新用户的默认参数也可以通过 adduser 命令设置。

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

用户添加命令

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

useradd new_user

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

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

useradd 使用奇怪的设置创建用户

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

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

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

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

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

添加用户命令

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

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 之间,您更喜欢哪一个?

相关阅读:

Posted in: LinuxTags: