共计 1824 个字符,预计需要花费 5 分钟才能阅读完成。
导读 | 在 Linux 中创建新用户时,我们可以选择使用 adduser 或 useradd 命令。那么,useradd 和 adduser 的区别是什么呢?实际使用的时候应该用哪一个比较好呢?下面我们来详细看一下。 |
useradd 命令是内置的 Linux 命令,在任何 Linux 系统中都可用。然而,使用这种低级别的工具创建用户是比较繁琐的,因为默认情况下,它不会创建主目录和用户密码。
adduser 不是标准的 Linux 命令,它本质上是一个 perl 脚本,在后台调用 useradd 命令。这个高级实用程序在 Linux 中创建用户的时候效率更高,它提供了创建主目录、设置密码以及其他一些参数的选项。
下面我们来详细看一下。
我们在《使用 useradd 命令在 Linux 中添加新用户》中介绍过 useradd 的用法,大家感兴趣的可以看一下。现在我们再来看下其 useradd 的默认用法,你使用过如下命令吗?
useradd new_user
这个命令默认不是创建一个完整的用户,即使为其设置了密码,但还需要使用其他选项。它会在 /etc/passwd 文件中添加以下内容:
我们在《Linux 中查看所有用户的三种方法》提到过 /etc/passwd 文件(如果不清楚的话大家可以再看一下)。这样看起来,用户似乎是创建成功了,但实际用的话,会发现某些地方不对劲。
首先,在 /etc/passwd 文件中,该新建用户的第二个字段中包含 “x”,这意味着在 /etc/shadow 中,密码是一个占位符,由于还没有设置密码,所以这个用户将无法登录。
第二个问题,该用户没有主目录,即 /home/test 不存在。即使设置了密码,如果用户登录的话,也会发生错误。因为 Linux 可能会阻止没有主目录的用户登录。最有可能的情况是,用户即使可以登录系统,也只是在文本模式下,但是不允许其创建他的主目录。
第三个问题,其登录的默认 shell 是 sh,而不是 bash,bash 是大多数 Linux 发行版上的默认 shell。
以上问题,可以在 /etc/login.defs 中修改。
adduser 命令在某些 Linux 发行版上不可用,在某些 Linux 中,它是 useradd 的一个软连接,在另外一些 Linux 系统中,它是一个 perl 脚本。
adduser 命令是一个交互式高级实用程序,它以 useradd 为后台,且自动配置 /etc/login.defs。在基于 Debian 的系统中,man 手册中都会建议使用它而不是 useradd 命令。使用 adduser 命令创建用户,它会引导你输入一系列的参数,如下图:
输入参数,回车,之后系统会创建一个完整的用户账户,包含主目录。如此,新用户就可以正常登录了。要使用 useradd 实现相同的功能,其命令类似于:
sudo useradd -d /home/test -m -s/bin/bash \ -c FullName,Phone,OtherInfo test && passwd test
上述命令中的 -c 选项可以删掉,其后面用逗号分割的内容是要添加到 /etc/passwd 中的内容。即便如此,useradd 命令还是比 adduser 额外多了两个选项需要输入。adduser 命令有一个可用的选项列表,如下是我们列出的一些最常用的(有关更多的信息,大家可参考帮助信息或者 man 手册)。
-
- system:添加系统用户。默认情况下,系统用户位于 nogroup 组中。要将系统用户添加到一个现有组中,需要使用 –gid 或 –ingroup 选项;
-
- home DIR:使用 DIR 作为主目录而不是默认的目录。如果需要,可以创建目录,并复制系统框架文件;
-
- shell SHELL:使用 SHELL 来代替默认的;
-
- ingroup GROUP:将用户的所属组设置为 GROUP;
- add_extra_groups:将新用户添加到配置文件中定义的额外组。
adduser 的配置文件可以允许我们设置一些创建用户时所要使用的默认值,比如:
-
- 默认 shell
-
- 主目录
-
- 所属组
- 添加额外组