如何在Linux中创建用户[15个useradd命令示例]

我们都很熟悉在Linux中被称为‘useradd‘或‘adduser‘的最常用命令。有时,Linux系统管理员会被要求在Linux上创建具有特定属性、限制或注释的用户帐户。

Linux中,‘useradd‘命令是一个用于在Linux和其他类Unix操作系统中添加或创建用户帐户的低级工具。‘adduser‘命令与‘useradd‘命令非常相似,因为它只是它的一个符号链接。

某些Linux发行版中,‘useradd‘命令可能会有稍有不同的版本。我建议在使用我们的指令在Linux中创建新用户帐户之前阅读您的文档。

当我们在Linux终端中运行‘useradd‘命令时,它会执行以下主要任务:

  • 它编辑/etc/passwd/etc/shadow/etc/group/etc/gshadow文件以创建新的用户帐户。
  • 为新用户创建并填充主目录。
  • 设置主目录的权限和所有权。

用户添加命令语法

useradd‘命令的基本语法是:

useradd [options] username

在本文中,我们将展示在Linux中使用‘useradd‘命令的15个最常用命令,并提供实际示例。

1.如何在Linux中添加新用户

要添加或创建新用户,您必须使用‘useradd‘或‘adduser‘命令,后跟‘用户名‘。‘用户名‘是用户用来登录系统的登录名。

只能添加一个用户,用户名必须是唯一的,并且不能已经存在于系统中。

例如,要添加一个名为‘tecmint‘的新用户,请使用以下命令:

useradd tecmint

当我们在Linux中使用‘useradd‘命令添加新用户时,它会在锁定状态下创建。要解锁该用户账户,我们需要使用‘passwd‘命令为该账户设置密码。

passwd tecmint

Changing password for user tecmint.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Create a User in Linux

一旦创建了新用户,其条目会自动添加到‘/etc/passwd‘文件中。该文件用于存储用户信息,条目应为。

tecmint:x:1000:1000:tecmint:/home/tecmint:/bin/bash
View User Info in Linux

上述条目包含一组七个冒号分隔的字段,每个字段都有其自己的含义。

让我们看看这些字段是什么:

  • 用户名–用户登录名用于登录系统。它应该在1到32个字符之间。
  • 密码–用户密码(或'x'字符)以加密格式存储在‘/etc/shadow‘文件中。
  • 用户ID(UID)–每个用户都必须有一个用户ID(UID),代表用户识别号。默认情况下,UID0保留给root用户,UID范围从1到99保留给其他预定义账户。此外,UID范围从100到999保留给系统账户和组。
  • 组ID(GID)–主组ID(GID),代表组识别号,存储在‘/etc/group‘文件中。
  • 用户信息–此字段是可选的,允许您定义有关用户的额外信息,例如用户的完整姓名。可以使用finger命令填写此信息。
  • 家目录–用户家目录的绝对位置。
  • Shell–用户Shell的绝对位置,例如/bin/bash

2.如何创建具有不同家目录的用户

默认情况下,‘useradd‘命令在‘/home‘目录下以用户名创建用户的家目录。例如,如上所述,用户‘tecmint‘的默认家目录是‘/home/tecmint‘。

然而,这种行为可以通过使用“-d”选项与新主目录的位置一起(例如,‘/data/projects’)来更改。例如,以下命令将创建一个名为‘anusha’的用户,并将其主目录设置为‘/data/projects’。

# useradd -d /data/projects anusha
# passwd anusha

您可以使用以下cat命令查看用户的主目录和其他与用户相关的信息,如用户ID、组ID、shell和注释。

cat /etc/passwd | grep anusha

anusha:x:1001:1001::/data/projects:/bin/bash
Create a User with a Home Directory in Linux

3. 如何创建具有特定用户ID的用户

在Linux中,每个用户都有自己的UID(唯一标识号码)。默认情况下,在Linux中创建新用户帐户时,它会分配用户ID500501502等。

然而,我们可以使用“-u”选项创建具有自定义用户ID的用户。例如,以下命令将创建一个名为‘navin’的用户,并设置自定义用户ID‘1002’。

useradd -u 1002 navin

现在,让我们使用以下命令验证使用定义的用户ID(1002)创建的用户。

cat /etc/passwd | grep navin

navin:x:1002:1002::/home/navin:/bin/bash
Create a User with the User ID in Linux

注意:确保用户ID的值与系统上已创建的任何其他用户的值都不相同。

4. 如何创建具有特定组ID的用户

每个用户都有自己的GID组标识符)。我们还可以使用'-g'选项创建具有特定组ID的用户。

在此示例中,我们将使用'-u''-g'选项同时添加一个名为’tarunika‘的用户,并指定UIDGID

useradd -u 1005 -g tecmint tarunika

现在,请检查‘/etc/passwd‘文件中分配的用户ID和组ID。

cat /etc/passwd | grep tarunika

tarunika:x:1005:1000::/home/tarunika:/bin/bash

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

id -gn tarunika
Create a User with Group ID in Linux

5. 如何将用户添加到多个组

使用'-G'选项可将用户添加到其他组。每个组名之间用逗号分隔,没有空格。

在此示例中,我们将用户‘tecmint’添加到多个组,例如adminswebadmindevelopers

groupadd admins
groupadd webadmin
groupadd developers
usermod -a -G admins,webadmin,developers tecmint
useradd -G admins,webadmin,developers paddy

接下来,使用id命令验证用户是否被分配到了多个组。

id tecmint

uid=1000(tecmint) gid=1000(tecmint)
groups=1000(tecmint),1007(admins),1008(webadmin),1009(developers)
context=root:system_r:unconfined_t:SystemLow-SystemHigh
Add User to Group in Linux

6. 如何添加没有家目录的用户

在某些情况下,由于安全原因,我们不希望为用户分配家目录,当这样的用户登录到刚重启的系统时,他们的家目录将是根目录。当这样的用户使用‘su‘命令时,他们的登录目录将是先前用户的家目录。

要创建没有主目录的用户,使用'-M'选项。例如,以下命令将创建一个名为‘shilpi’的用户,没有主目录。

useradd -M shilpi

现在,让我们使用ls命令验证用户是否创建成功且没有主目录。

ls -l /home/shilpi

ls: cannot access /home/shilpi: No such file or directory
Create User Without Home Directory in Linux

7. 在Linux中设置用户过期日期

默认情况下,当我们使用‘useradd‘命令添加用户时,用户帐户永不过期,这意味着它们的过期日期设置为0(表示永不过期)。

但是,我们可以使用'-e'选项设置过期日期,它应该是YYYY-MM-DD格式的。这对于创建特定时间段的临时帐户很有帮助。

在此示例中,我们创建一个名为‘aparna’的用户,其帐户过期日期为2021年8月27日,格式为YYYY-MM-DD

useradd -e 2021-08-27 aparna

接下来,在设置帐户过期日期后,使用‘chage‘命令验证用户‘aparna’的帐户和密码到期信息。

chage -l aparna

Last password change					: Jun 25, 2021
Password expires					: never
Password inactive					: never
Account expires						: Aug 27, 2021
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
Create User With Account Expiry Date

8. 如何创建带有密码到期日期的用户

'-f' 参数用于定义密码过期后的天数。值为 0 会在密码过期后立即停用用户帐户。默认情况下,密码过期值被设置为 -1,这意味着密码永不过期。

在此示例中,我们将使用 '-e''-f' 选项为用户 ‘mansi‘ 设置一个 45 天的帐户密码过期日期。

useradd -e 2014-04-27 -f 45 mansi
Create User With Password Expiry Date

9. 如何在 Linux 中添加带注释的用户

'-c' 选项允许您向 ‘/etc/passwd‘ 文件添加自定义注释,例如用户的全名、电话号码等。注释可以作为单行添加,不带任何空格。

例如,以下命令将添加一个用户 ‘mansi‘ 并将该用户的全名 Manis Khurana 插入注释字段。

useradd -c "Manis Khurana" mansi

您可以使用 tail 命令 在 ‘ /etc/passwd‘ 文件中的注释部分查看插入的注释。

tail -1 /etc/passwd

mansi:x:1010:1013:Manis Khurana:/home/mansi:/bin/sh
Create User with Full Name

10. 如何在 Linux 中创建用户登录 Shell

有时,我们添加与登录 Shell 无关的用户,或者有时我们需要为用户分配 不同的 Shell。我们可以使用 ‘ -s‘ 选项为每个用户分配不同的登录 Shell。

在这个示例中,将添加一个没有登录 shell 的用户 ‘tecmint’,即 ‘/ sbin / nologin’ shell。

useradd -s /sbin/nologin tecmint

您可以在 ‘/ etc / passwd’ 文件中检查分配给用户的 shell。

tail -1 /etc/passwd

tecmint:x:1011:1014::/home/tecmint:/sbin/nologin
Create a User with a Login Shell

11. 如何创建具有指定主目录、Shell 和注释的用户

以下命令将创建一个用户 ‘ravi’,其主目录为 ‘/ var / www / tecmint’,默认 shell 为 ‘/ bin / bash’,以及有关用户的其他信息。

useradd -m -d /var/www/ravi -s /bin/bash -c "TecMint Owner" -U ravi
Create a User with Home Directory and Login Shell

在上述命令中,选项 ‘-m’ 和 ‘-d’ 创建具有指定主目录的用户,选项 ‘-s’ 将用户的默认 shell 设置为 ‘/ bin / bash’。 ‘-c’ 选项添加有关用户的额外信息,’-U’ 参数创建/添加与用户名称相同的组。

12. 如何创建具有定义的主目录、Shell、注释、UID/GID 的用户

该命令与上面的命令非常相似,但在这里我们将 shell 定义为 ‘/ bin / zsh’ 并为用户 ‘tarunika’ 设置自定义 UID 和 GID。 ‘-u’ 选项定义新用户的 UID(即 100),’-g’ 选项定义 GID(即 1000)。

useradd -m -d /var/www/tarunika -s /bin/zsh -c "TecMint Technical Writer" -u 1000 -g 100 tarunika
Create a User with UID and GID

13. 如何创建具有主目录、无 Shell、注释和 UID 的用户

以下命令与上述两个命令非常相似。唯一的区别是,这里我们禁用了一个名为“avishek”的用户的登录Shell,该用户具有自定义的用户ID(即1019)。

选项“'-s'”将默认Shell设置为/bin/bash,但在这种情况下,我们将登录Shell设置为“/usr/sbin/nologin”。这意味着用户“avishek”将无法登录系统。

useradd -m -d /var/www/avishek -s /usr/sbin/nologin -c "TecMint Sr. Technical Writer" -u 1019 avishek
Create a User with UID and Nologin

14. 如何创建具有指定主目录、Shell、骨架和UID的用户

此命令中唯一的更改是,我们使用了选项'-k'将自定义骨架目录设置为/etc/custom.skell,而不是默认目录/etc/skel。我们还使用了'-s'选项为用户“navin”定义了不同的Shell,即/bin/tcsh

useradd -m -d /var/www/navin -k /etc/custom.skell -s /bin/tcsh -c "No Active Member of TecMint" -u 1027 navin
Create a User with Shell and UID

15. 如何创建一个没有主目录、Shell或组,并带有注释的用户

以下命令与上述其他命令非常不同。在这里,我们使用了'-M'选项来创建一个没有用户主目录的用户,'-N'选项用于指示系统仅创建用户名(而不包括组)。'-r'选项用于创建系统用户。

useradd -M -N -r -s /bin/false -c "Disabled TecMint Member" clayton
Create a User with NoLogin and Group

有关“useradd”的更多信息和选项,请在终端中运行“useradd”命令以查看可用选项。

useradd

如果您想修改用户账户属性,比如修改用户名、用户ID(UID)、主目录、shell等等,可以使用usermod命令

Source:
https://www.tecmint.com/add-users-in-linux/