adduser做什么,而useradd不做什么?


71

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

大多数答案从本质上说是adduser为交互添加用户提供了更好的界面,但没有提供adduser与相比没有多少详细信息useradd。所以:

  1. 这是什么adduseruseradd不?
  2. 我需要使用哪些命令来产生相等的结果?

Answers:


79

首先,相应的手册页摘要突出显示了两个命令之间的差异,并提供了一些提示。对于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_MAX/etc/login.defsDebian政策相匹配。不过,问题在于Debian为系统用户UID指定了一个特定范围,似乎仅在该范围内受支持/etc/adduser.conf,因此,天真地添加系统用户useradd且未在正确范围内指定UID / GUID可能会引起严重问题。

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

adduser username newgroup

替换了一个更复杂的usermod命令,该命令要求指定用户已经是该用户的组(并且您希望该用户仍然是成员)的组:

usermod -G all,other,groups,user,is,in,newgroup

adduser不过,使用此处的一个缺点是一次只能指定一个组。


这很酷!我什至不知道这是一个问题。是否像useradd一样使用哈希密码?顺便说一句,这是一项非常好的工作。
mikeserv 2014年

我不知道我是否完全同意“管理员应...”的说法...就我个人而言,我认为管理员应该adduser根据系统范围的政策将自己的职责放在一起,但这只是扶手椅四分卫充其量。
mikeserv

@mikeserv,不,没有哈希密码。不过,您还应该了解另一个程序chpasswd-该程序可以接受上的哈希密码stdin。尽管我认为,我将等到明天再更新其他答案。
Graeme 2014年

好贴。对我来说,细节太多了。我最想念的是,它adduser最初是为服务器管理员创建的,他们经常需要像在大学的电子邮件服务器上那样创建/修改/限制真实用户。有了adduser您,您可以自动化该过程。在过去的几年中,这种情况发生了一些变化,因此useradd对于许多管理员而言,如今可能adduser已经变得困难起来,因为它们已成为人们选择的工具。

在我的Ubuntu 16.04上,-U/ --user-group似乎是默认值。
富兰克林·于

2

默认情况下,adduser命令还会为系统用户创建一个/ home / user目录,您不能使用useradd命令执行该操作。useradd仅为普通用户而非系统用户添加主目录。


1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.