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

时间:2020-03-05 15:27:16  来源:igfitidea点击:

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  2016 .bash_logout
-rw-r--r-- 1 username username 3771 Apr  4  2016 .bashrc
-rw-r--r-- 1 username username  807 Apr  4  2016 .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

我们可以使用“ id”命令来验证用户的UID:

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',辅助组为'wheel'和'docker'。

sudo useradd -g users -G wheel,developers username

我们可以通过键入以下内容来检查用户组

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

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

默认情况下,新用户的登录shell设置为“/etc/default/useradd”文件中指定的登录shell。
在某些发行版中,默认shell程序设置为'/bin/sh',而在其他发行版中,默认shell程序设置为'/bin/bash'。

'-s'('--shell')选项可让我们指定新用户的登录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, 2016
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值

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

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

useradd -D

输出将如下所示:

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

假设我们要将默认的登录shell从'/bin/sh'更改为'/bin/bash'。
为此,请指定新的shell,如下所示:

sudo useradd -D -s /bin/bash

我们可以通过运行以下命令来验证是否更改了默认shell程序值:

sudo useradd -D | grep -i shell
SHELL=/bin/bash