如何在Linux中创建用户(useradd命令)

评论 0 浏览 0 2018-12-12

Linux是一个多用户系统,这意味着不止一个人可以同时与同一个系统互动。作为一个系统管理员,你有责任通过创建和删除用户并将他们分配到不同的来管理系统的用户和组。

在这篇文章中,我们将讨论如何使用useradd命令来创建新的用户账户。

useradd 命令

useradd命令的一般语法如下:。

useradd [OPTIONS] USERNAME

只有root或具有sudo权限的用户可以使用useradd命令来创建新的用户账户。

当被调用时,useradd根据命令行上指定的选项和/etc/default/useradd文件中设置的默认值创建一个新的用户账户。

这个文件中定义的变量在不同的发行版中是不同的,这就导致useradd命令在不同的系统上产生不同的结果。

useradd还读取/etc/login.defs文件的内容。该文件包含影子密码套件的配置,如密码过期策略、创建系统和普通用户时使用的用户ID范围等等。

如何在Linux中创建一个新的用户

要创建一个新的用户帐户,请调用useradd命令,后面跟上用户的名字。

例如,要创建一个名为username的新用户,你需要运行。

sudo useradd username

当执行时没有任何选项,useradd会使用/etc/default/useradd文件中指定的默认设置创建一个新的用户账户。

该命令在/etc/passwd/etc/shadow,/etc/group/etc/gshadow文件中增加了一个条目。

为了能够以新创建的用户登录,你需要设置用户密码。要做到这一点,请运行passwd@命令,后面跟上用户名。

sudo passwd username

你会被提示输入并确认密码。请确保你使用一个强大的密码。

输出

Changing password for user username.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

如何添加一个新用户并创建主目录

在大多数Linux发行版上,当用useradd创建一个新的用户账户时,用户的主目录并没有被创建。

使用-m(--create-home)选项来创建用户主目录为/home/username

sudo useradd -m username

上面的命令创建了新用户的主目录,并将/etc/skel目录中的文件复制到用户的主目录。如果你列出/home/username目录下的文件,你会看到初始化文件。

ls -la /home/username/

输出

drwxr-xr-x 2 username username 4096 Dec 11 11:23 .
drwxr-xr-x 4 root     root     4096 Dec 11 11:23 ..
-rw-r--r-- 1 username username  220 Apr  4  2018 .bash_logout
-rw-r--r-- 1 username username 3771 Apr  4  2018 .bashrc
-rw-r--r-- 1 username username  807 Apr  4  2018 .profile

在主目录中,用户可以写入、编辑和删除文件和目录。

创建一个具有特定主目录的用户

默认情况下,useradd/home创建用户的主目录。如果你想在其他地方创建用户的主目录,请使用d--home)选项。

下面是一个例子,显示了如何创建一个名为username的新用户,其主目录为/opt/username

sudo useradd -m -d /opt/username username

创建一个具有特定用户ID的用户

在Linux和类似Unix的操作系统中,用户是由唯一的UID和用户名来识别的。

用户标识符(UID)是Linux系统分配给每个用户的唯一正整数。UID和其他访问控制策略被用来确定用户在系统资源上可以执行的行动类型。

默认情况下,当一个新的用户被创建时,系统会从login.defs文件中指定的用户ID范围内分配下一个可用的UID。

-u(--uid)选项调用useradd来创建一个具有特定UID的用户。例如,要创建一个名为username、UID为1500的新用户,你需要键入。

sudo useradd -u 1500 username

你可以验证用户的UID,使用id命令。

id -u username

输出

1500

创建一个具有特定组别ID的用户

Linux组是用于组织和管理Linux中用户账户的组织单位。组的主要目的是定义一组权限,如某一资源的读、写或执行权限,可以在组内的用户之间共享。

当创建一个新的用户时,useradd命令的默认行为是创建一个与用户名同名的组,并且GID与UID相同。

-g (--gid) 选项允许你创建一个具有特定初始登录组的用户。你可以指定组名或GID号码。该组的名称或GID必须已经存在。

下面的例子显示了如何创建一个名为username的新用户,并将登录组设置为users类型。

sudo useradd -g users username

要验证用户的GID,请使用id命令。

id -gn username

输出

users

创建一个用户并分配多个组别

在Linux操作系统中,有两种类型的组 主要组和次要(或补充)组。每个用户正好可以属于一个主组和零个或多个辅助组。

你可以用-G (--groups)选项指定一个用户将成为其成员的补充组列表。

下面的命令创建了一个名为username的新用户,主要组为users,次要组为wheeldocker

sudo useradd -g users -G wheel,docker username

你可以通过键入以下语句来检查用户组

id username

输出

uid=1002(username) gid=100(users) groups=100(users),10(wheel),993(docker)

创建一个具有特定登录Shell的用户

默认情况下,新用户的登录shell被设置为/etc/default/useradd文件中指定的那个。在一些发行版中,默认的shell被设置为/bin/sh,而在其他发行版中,它被设置为/bin/bash

-s (--shell)选项允许你指定新用户的登录外壳。

例如,要创建一个名为username的新用户,并将/usr/bin/zsh作为登录的shell类型。

sudo useradd -s /usr/bin/zsh username

检查/etc/passwd文件中的用户条目,以验证用户的登录Shell。

grep username /etc/passwd

输出

username:x :1001:1001::/home/username:/usr/bin/zsh

使用自定义注释创建用户

-c--comment)选项允许你为新用户添加简短的描述。通常情况下,用户的全名或联系信息被添加为评论。

在下面的例子中,我们正在创建一个名为username的新用户,并将文本字符串Test User Account作为注释。

sudo useradd -c "Test User Account" username

该评论被保存在/etc/passwd文件中。

grep username /etc/passwd

输出

username:x :1001:1001:Test User Account:/home/username:/bin/sh

注释字段也被称为GECOS

创建一个有到期日的用户

要定义一个新用户账户过期的时间,请使用-e--expiredate)选项。这对创建临时账户很有用。

日期必须使用YYYY-MM-DD的格式来指定。

例如,要创建一个名为username的新用户账户,其到期时间设置为2019年1月22日,你将运行。

sudo useradd -e 2019-01-22 username

使用chage命令来验证用户账户的到期日。

sudo chage -l username

输出结果将看起来像这样。

输出

Last password change					: Dec 11, 2018
Password expires					: never
Password inactive					: never
Account expires						: Jan 22, 2019
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7

创建一个系统用户

系统用户和普通(正常)用户之间没有真正的技术区别。通常情况下,系统用户是在安装操作系统和新软件包时创建的。

使用-r--system)选项来创建一个系统用户账户。例如,要创建一个名为username的新系统用户,你需要运行。

sudo useradd -r username

系统用户的创建是没有过期日期的。他们的UID是从login.defs文件中指定的系统用户ID范围中选择的,这与普通用户使用的范围不同。

改变默认的useradd的值

默认的useradd选项可以通过-D--defaults选项来查看和更改,也可以通过手动编辑/etc/default/useradd文件中的数值。

要查看当前的默认选项,请键入:。

useradd -D

输出结果将看起来像这样。

输出

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

假设你想把默认的登录外壳从/bin/sh改为/bin/bash。要做到这一点,指定新的shell,如下图所示。

sudo useradd -D -s /bin/bash

你可以通过运行下面的命令来验证默认的shell值是否已经改变。

sudo useradd -D | grep -i shell

输出

SHELL=/bin/bash

总结

我们已经向你展示了如何使用useradd命令创建新的用户账户。同样的说明适用于任何Linux发行版,包括Ubuntu、CentOS、RHEL、Debian、Fedora和Arch Linux。

useradd是一个低级别的工具,Debian和Ubuntu的用户可以使用更友好的adduser命令来代替。

如果您有任何问题,请随时留言咨询。

最后更新2023-10-04
0 个评论