Useradd与Adduser:有何区别

时间:2020-03-05 15:30:06  来源:igfitidea点击:

那么useradd和adduser命令之间有什么区别?
其中一个比另一个更好吗?
我们应该使用哪一个?
useradd或者adduser?

区别

Useradd是内置的Linux命令,可以在任何Linux系统上找到。

但是,以这种低级别创建新用户是一项繁琐的任务。

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

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

Useradd命令

首先,让我们看一下useradd命令的默认行为。
我们是否曾经运行以下命令?

useradd new_user

我尚未看到此命令已创建完整用户帐户的发行版。
即使在为新用户设置密码之后,我们也需要使用其他选项。

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

如果我们阅读了有关在Linux上列出用户的文章,则我们可能已经熟悉/etc/passwd文件的内容。

乍一看看起来不错,但是如果我们开始进行挖掘,我们很快就会发现有些事情不太正确。

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

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

第三,默认shell是sh,而不是bash。
我不使用sh作为shell。
我们可能两者都不是,因为bash是大多数Linux发行版中的默认shell。

尽管可以通过编辑/etc/login.defs来稍微修改useradd的行为,但是上述命令几乎没有机会创建一个完整的用户帐户。
Useradd是一个低级实用程序。
不过,浏览/etc/login.defs中的设置还是有用的。

Adduser命令

在某些Linux发行版中,Adduser不可用。
在其他方面,它是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有一个可用选项列表。
这是我认为最有用的简短列表。
有关更多详细信息,请参考帮助或者手册页。

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

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

  • 默认shell
  • 主目录
  • 另外的团体
  • 添加另外的组