我们都知道Linux 中最流行的命令“ useradd ”或“ adduser ”。有时会要求 Linux 系统管理员在 Linux 上创建具有某些特定属性、限制或注释的用户帐户。
在 Linux 中,“ useradd ”命令是一个低级实用程序,用于在Linux和其他类Unix操作系统中添加/创建用户帐户。' adduser ' 与useradd命令非常相似,因为它只是一个符号链接。
在其他一些 Linux 发行版中,useradd命令的版本可能略有不同。
当我们在Linux 终端中运行“ useradd ”命令时,它会执行以下主要操作:
为新创建的用户帐户编辑/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow文件。
为新用户创建并填充主目录。
设置主目录的权限和所有权。
useradd命令的基本语法是:
# useradd [options] username
在本文中,小编将展示最常用的15个useradd 命令及其在Linux 中的实际示例。这里将本节分为两部分,从命令的基本使用到高级用法。
第一部分 - useradd 命令的 10 个基本用法
要添加/创建新用户,必须遵循命令“ useradd ”或“ adduser ”和“ username ”。“用户名”是用户登录名,用户使用它登录系统。
只能添加一个用户,并且该用户名必须是唯一的(不同于系统中已存在的其他用户名)。
例如,要添加名为“ tecmint ”的新用户,请使用以下命令。
[ root@tecmint ~]# useradd tecmint
当使用“ useradd ”命令在Linux中添加一个新用户时,它会以锁定状态创建并解锁该用户帐户,这里需要使用“ passwd ”命令为该帐户设置密码。
[root@tecmint ~]# passwd tecmint
Changing password for user tecmint.
New UNIX password:
Retype new UNIX password: passwd:
all authentication tokens updated successfully.

创建新用户后,其条目会自动添加到“ /etc/passwd ”文件中。该文件用于存储用户的信息,条目应该是。
tecmint:x:1000:1000:tecmint:/home/tecmint:/bin/bash
上面的条目包含一组七个以冒号分隔的字段,每个字段都有自己的含义,下面简单解释下。
Username:用于登录系统的用户登录名。它的长度应该在 1 到 32 个字符之间。
Password:以加密格式存储在/etc/shadow文件中的用户密码(或 x 字符)。
User ID (UID):每个用户都必须有一个用户ID ( UID ) 用户标识号。默认情况下,为 root 用户保留UID 0,为其他预定义帐户保留范围从1-99 的UID 。范围从100-999 的其他 UID保留用于系统帐户和组。
Group ID (GID):存储在/etc/group文件中的主要组 ID ( GID ) 组标识号。
User Info:此字段是可选的,允许您定义有关用户的额外信息。例如,用户全名。该字段由“finger”命令填充。
Home Directory:用户主目录的绝对位置。
Shell:用 shell 的绝对位置,即/bin/bash。
默认情况下,' useradd ' 命令会在/home目录下创建一个用户主目录,并使用用户名。因此,在上面看到用户“ tecmint ”的默认主目录是“ /home/tecmint ”。
但是,可以通过使用“ -d ”选项以及新主目录(即/data/projects)的位置来更改此操作。例如,以下命令将创建一个用户 ' anusha ',其主目录为 ' /data/projects '。
[ root@tecmint ~]# useradd -d /data/projects anusha
[ root@tecmint ~]# passwd anusha
可以查看用户主目录和其他与用户相关的信息,例如用户ID、组 ID、shell和注释。
[root@tecmint ~]# cat /etc/passwd | grep anushaanusha:x:1001:1001::/data/projects:/bin/bash

在 Linux 中,每个用户都有自己的UID(唯一标识号)。默认情况下,每当我们在Linux 中创建一个新的用户帐户时,它都会分配用户 ID 500、501、502等等......
但是,可以使用“ -u ”选项创建具有自定义用户 ID 的用户。例如,以下命令将创建一个具有自定义用户 ID ' 1002 '的用户 ' navin '。
[ root@tecmint ~]# useradd -u 1002 navin
现在,使用以下命令验证用户是否使用定义的用户 ID ( 1002 )创建。
[ root@tecmint ~]# cat /etc/passwd | grep navin
navin:x: 1002 :1002::/home/navin:/bin/bash

注意:确保用户 ID 的值必须与系统上任何其他已创建的用户不同。
同样,每个用户都有自己的GID(组标识符)。我们也可以使用-g选项创建具有特定组 ID 的用户。
在此示例中,将在“ -u ”和“ -g ”选项的帮助下同时添加具有特定UID和GID的用户“ tarunika ” 。
[ root@tecmint ~]# useradd -u 1005 -g tecmint tarunika
现在,在“ /etc/passwd ”文件中查看分配的用户 ID 和组 ID 。
[root@tecmint ~]# cat /etc/passwd | grep tarunikatarunika:x:1005:1000::/home/tarunika:/bin/bash
要验证用户的 GID,请使用 id 命令:
[ root@tecmint ~]# id -gn tarunika

5. 将用户添加到多个组
' -G ' 选项用于将用户添加到其他组。每个组名用逗号分隔,中间没有空格。
在此示例中,我们将用户“ tecmint ”添加到多个组中,例如admins、webadmin和developer。
[root@tecmint:~]# groupadd admins
[root@tecmint:~]# groupadd webadmin
[root@tecmint:~]# groupadd developers
[root@tecmint:~]# usermod -a -G admins,webadmin,developers tecmint
[root@tecmint:~]# useradd -G admins,webadmin,developers paddy
接下来,使用 id 命令验证是否将多个组分配给了用户。
[root@tecmint ~]# 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-SystemHigh

6. 添加没有主目录的用户
在某些情况下,由于某些安全原因,我们不想为用户分配主目录。在这种情况下,当用户登录刚刚重新启动的系统时,其主目录将是 root。当此类用户使用su 命令时,其登录目录将是前一个用户的主目录。
要创建没有主目录的用户,请使用“ -M ”。例如,以下命令将创建一个没有主目录的用户“ shilpi ”。
[ root@tecmint ~]# useradd -M shilpi
[root@tecmint ~]# ls -l /home/shilpi
ls: cannot access /home/shilpi: No such file or directory
默认情况下,当我们使用“ useradd ”命令添加用户时,用户帐户永远不会过期,即它们的过期日期设置为0(意味着永不过期)。
但是,我们可以使用“ -e ”选项设置到期日期,该选项以YYYY-MM-DD格式设置日期。这有助于创建特定时间段的临时帐户。
在此示例中,我们创建了一个用户“ aparna ”,其帐户到期日期为2021年8月28日,格式为YYYY-MM-DD。
[ root@tecmint ~]# useradd -e 2021-08-28 aparna
接下来,在设置帐户到期日期后,使用用户 ' aparna '的 ' chage ' 命令验证帐户和密码的年龄。
[root@tecmint ~]# chage -l aparna
Last password change : Jun 25, 2021
Password expires : never
Password inactive : never
Account expires : Aug 28, 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
' -f ' 参数用于定义密码过期后的天数。密码过期后,值为0的用户帐户将处于不活动状态。默认情况下,密码过期值设置为-1表示永不过期。
在此示例中,我们将使用“ -e ”和“ -f ”选项为用户“ mansi ”设置帐户密码到期日期,即45 天。
[ root@tecmint ~]# useradd -e 2014-04-27 -f 45 mansi

' -c ' 选项允许您向/etc/passwd文件添加自定义注释,例如用户的全名、电话号码等。注释可以单行添加,没有任何空格。
例如,以下命令将添加一个用户“ mansi ”,并将该用户的全名Manis Khurana插入到评论字段中。
[ root@tecmint ~]# useradd -c "Manis Khurana" mansi
您可以在评论部分的“ /etc/passwd ”文件中看到您的评论。
[root@tecmint ~]# tail -1 /etc/passwd
mansi:x:1010:1013:Manis Khurana:/home/mansi:/bin/shv

10. 在 Linux 中创建用户登录 Shell
有时,我们添加与登录 shell 无关的用户,有时我们需要为我们的用户分配不同的 shell。我们可以使用“ -s ”选项为每个用户分配不同的登录shell 。
在这个例子中,将添加一个没有登录shell的用户 ' tecmint ',即 ' /sbin/nologin ' shell。
[ root@tecmint ~]# useradd -s /sbin/nologin tecmint
您可以在“ /etc/passwd ”文件中检查分配给用户的shell 。
[ root@tecmint ~]# tail -1 /etc/passwd
tecmint :x:1011:1014::/home/tecmint: /sbin/nologin
第二部分 – useradd 命令的5个高级用法
以下命令将创建一个用户 ' ravi ',主目录为 ' /var/www/tecmint ',默认 shell 为/bin/bash并添加有关用户的额外信息。
[ root@tecmint ~]# useradd -m -d /var/www/ravi -s /bin/bash -c "TecMint Owner" -U ravi

在上面的命令中,' -m -d ' 选项创建一个具有指定主目录的用户,' -s ' 选项设置用户的默认 shell,即/bin/bash。“ -c ”选项添加有关用户的额外信息,“ -U ”参数创建/添加与用户同名的组。
该命令与上面的命令非常相似,但这里我们将 shell 定义为“ /bin/zsh ”,并将自定义UID和GID定义为用户“ tarunika ”。其中“ -u ”定义了新用户的UID(即100),而“ -g ”定义了GID(即1000)。
[ root@tecmint ~]# useradd -m -d /var/www/tarunika -s /bin/zsh -c "TecMint Technical Writer" -u 1000 -g 100 tarunika
下面的命令与上面的两个命令非常相似,唯一的区别在这里,我们禁用了一个名为“ avishek ”的用户的登录 shell ,具有自定义用户 ID(即1019)。
这里的“ -s ”选项添加了默认的shell /bin/bash,但在这种情况下,我们将登录设置为“ /usr/sbin/nologin ”。这意味着用户“ avishek ”将无法登录系统。
[ root@tecmint ~]# useradd -m -d /var/www/avishek -s /usr/sbin/nologin -c "TecMint Sr. Technical Writer" -u 1019 avishek
这个命令唯一的变化是,我们使用了“ -k ”选项来设置自定义骨架目录,即/etc/custom.skell,而不是默认的/etc/skel。我们还使用了“ -s ”选项来定义不同的shell,即/bin/tcsh到用户“ navin ”。
[ root@tecmint ~]# useradd -m -d /var/www/navin -k /etc/custom.skell -s /bin/tcsh -c "TecMint 没有活跃成员" -u 1027 navin
以下命令与上面解释的其他命令非常不同。在这里,我们使用“ -M ”选项创建没有用户主目录的用户,并使用“ -N ”参数告诉系统只创建用户名(没有组)。' -r ' 参数用于创建系统用户。
[ root@tecmint ~]# useradd -M -N -r -s /bin/false -c "Disabled TecMint Member" Clayton
最后,有关 useradd 的更多信息和选项,请在终端上运行“ useradd ”命令以查看可用选项。
# useradd
备注:以上文章由惠主机www.idccoupon.com编辑整理,仅适用于Linux操作系统,有任何问题欢迎交流讨论。