Useradd与Adduser:有何区别
那么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
- 主目录
- 另外的团体
- 添加另外的组