我想知道:为什么 Debian Linux 上有这两个命令,它们的名称和功能非常相似?这一直让我很困惑。
- 它们之中有谁比别人优秀吗?
- 为什么它们不合并成一个?
- 它们之间有显著的差异吗?
- 我应该使用哪一个?还是取决于用例?
答案1
useradd
是使用系统编译的本机二进制文件。但是,它是一个在后端adduser
使用二进制文件的 perl 脚本。useradd
adduser
比其后端更加用户友好和互动useradd
。提供的功能没有区别。
答案2
主要优势添加用户超过用户添加正在处理系统级用户。添加用户系统级用户帐户在创建时会将用户目录放在系统用户的主目录中,其中用户添加不会自动执行。如果你读过手册,你会发现它们本质上是相同的,只是系统级用户和相关主目录是自动的。添加用户自动为系统级用户创建一个 /home/user 目录,如果没有提供用户添加,除非另有规定-m选项。我读到的其他读物一般都说 UID 和 GUID 是由公认的 Debian 标准分配的添加用户。
答案3
在我检查的几个 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 来覆盖)。因此,这些程序被命名为用户*(分别为 useradd、usermod 和 userdel)。我认为替代方案*用户命名约定(adduser、moduser 和 deluser——这些不存在)也可以工作。但这会稍微有点尴尬(出于一个我现在无法清楚表达的原因 :)
答案4
在 raspian 中(我需要检查其他操作系统),“adduser USER”启动一个对话框(TUI),而“useradd USER”则不会。
显然,使用 adduser,一旦出现对话框,完整的“useradd”命令就已经执行了。即使您按 CTRL-C,您的用户仍在那里。
就像在新系统中创建“个人”组一样,要删除新创建的用户,您需要:
- 六、/etc/passwd
- 六、/ etc /组
- rm -rf /home/用户
我认为因为 adduser “使用” useradd,所以其余部分都是关于用户的元数据。因此从技术上讲,“skel”、“文件掩码”等没有变化,即您的系统默认值。
另一方面,由于 useradd 不会调出任何 TUI,因此它在脚本编写中可能更有用。
老实说,我只在 rasbian 中测试过它,因为这就是我踩到这个问题的原因。
我可以想象其他操作系统可能会实现不同版本的adduser。