“ adduser”和“ useradd”有什么区别?


61

我想知道:为什么在Debian Linux上有这两个命令,它们的名称和功能非常相似?这一直让我感到困惑。

  • 他们中的任何一个都优越吗?
  • 他们为什么不合并为一个?
  • 它们之间有什么显着差异吗?
  • 我应该使用哪一个?还是取决于用例?

1
请注意,该useradd功能在所有类Unix平台上均可用。adduser仅适用于Debian及其衍生产品。
富兰克林于

Answers:


68

useradd是使用系统编译的本机二进制文件。但是,这adduser是一个useradd在后端使用二进制文件的perl脚本。

adduser比后端更具用户友好性和交互性useradd。提供的功能没有差异。


1
adduser并非在所有发行版中都可用(例如,基于suse的发行版),而在其他一些发行版中,它只是与useradd(基于redhat的)的符号链接。
ychaouche

11

useradd相比,adduser的主要优点是与系统级用户打交道。使用adduser时,系统级别的用户帐户在创建时会将用户目录放置在系统用户的主目录中,而useradd不会自动添加。如果您阅读该手册,则除了系统级用户和关联的主目录是自动的之外,它们基本上是相同的。adduser自动为系统级别的用户创建一个/ home / user目录,该目录中useradd中没有任何规定,除非由-m选项指定。我遇到的其他读物一般都指出UID和GUID是由adduser中公认的共形Debian标准分配的


1
adduser具有--no-create-home选项。
ychaouche

1

在我检查过的几个Redhat实例中(2011年为4.9,2017年为6.9),adduser只是useradd的别名,而不是Perl脚本。这是在Redhat 6.9中:

$ ls -la /usr/sbin/useradd /usr/sbin/adduser
lrwxrwxrwx. 1 root root      7 Nov  2  2016 /usr/sbin/adduser -> useradd
-rwxr-x---. 1 root root 111320 Feb  9  2016 /usr/sbin/useradd

我记得useradd是“正确的”程序的方式是:添加用户只是CRUD领域中的一项操作。您还需要“修改”和“删除”操作(查看/ etc / passwd可能会覆盖“读取”)。因此,这些程序被命名为user *(分别为useradd,usermod和userdel)。我想其他的* user命名约定(adduser,moduser和deluser -这些都不存在)也可以工作。但这会有些尴尬(由于目前我无法清楚表达这一原因:)


moduser在Debian上找不到,但是deluser肯定在那里。
ychaouche

0

在raspian中(我需要检查其他操作系统),“ adduser USER”将启动一个对话框(TUI),而“ useradd USER”则不会。

显然,使用adduser,一旦出现对话框,就已经执行了完整的'useradd'命令。即使您使用CTRL-C,您的用户也在那里。

与在新系统中一样,他们创建“个人”组,要删除新创建的用户,您需要:

  • vi / etc / passwd
  • vi / etc / group
  • rm -rf / home / USER

我假设因为adduser“使用” useradd,其余的是关于用户的元数据。因此,从技术上讲,“ skel”,“文件掩码”等没有任何变化,即您的系统默认设置。

另一方面,由于useradd不会显示任何TUI,因此在脚本编写中可能会更有用。

老实说我只在阿拉伯语中测试过它,因为那是我加紧回答这个问题的原因。

我可以想象其他操作系统可能会实现不同版本的adduser。

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.