useradd命令15个实际示例及/etc/passwd文件详解

linux中useradd命令15个实际示例

在 Linux 中,一个 useradd 命令是一个基础实用程序,用于添加 / 创建用户帐户Linux和别的Unix-like操作系统。这 adduser 非常类似于useradd命令,因为它只是一个符号链接。

useradd 命令示例

在其他一些 Linux 发行版中,useradd命令可能带有稍微不同的版本。我建议你在使用我们的说明创建新用户帐户之前阅读您的文档Linux.

当我们运行 useradd 命令在 Linux 终端中执行以下主要操作:

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

Useradd 命令语法

的基本语法useradd命令是:

# useradd [options] username

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

要添加 / 创建新用户,您必须遵循命令 useradd要么adduserusername。这 username 是用户登录名,用于用户登录系统。

只能添加一个用户,并且该用户名必须是唯一的(不同于系统中已存在的其他用户名)。

例如,添加一个名为 rumenz的新用户,使用以下命令。

[root@rumenz ~]# useradd rumenz

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

[root@rumenz ~]# passwd rumenz
Changing password for user rumenz.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

在 Linux 中创建用户

创建新用户后,其条目将自动添加到 /etc/passwd 文件。该文件用于存储用户的信息。

rumenz:x:1000:1000:rumenz:/home/rumenz:/bin/bash

在 Linux 中查看用户信息

上面的条目包含一组七个以冒号分隔的字段,每个字段都有自己的含义。让我们看看这些字段是什么:

  • Username:用于登录系统的用户登录名。它的长度应该在 1 到 32 个字符之间。
  • Password: 用户密码(或 x 字符)存储在/etc/shadow加密格式的文件。
  • User ID (UID): 每个用户必须有一个用户ID(UID) 用户识别号。默认情况下,UID 0为 root 用户和 UID 保留,范围从1-99保留用于其他预定义帐户。进一步的 UID 范围从100-999为系统帐户和组保留。
  • Group ID (GID): 主要组 ID (GID) 组标识号存储在/etc/group文件。
  • User Info:此字段是可选的,允许您定义有关用户的额外信息。例如,用户全名。该字段由 “finger” 命令填充。
  • Home Directory: 用户家目录的绝对位置。
  • Shell:用户shell的绝对位置即/bin/bash.

2. 创建不同家目录的用户

默认情况下 useradd 命令在下面创建用户的家目录/home带有用户名的目录。因此,例如,我们已经在上面看到了用户的默认家目录 rumenz/home/rumenz

但是,此操作可以通过使用 -d 选项以及新家目录的位置(即/data/projects)。例如,以下命令将创建一个用户 rumenz带有家目录/data/projects

[root@rumenz ~]# useradd -d /data/projects rumenz
[root@rumenz ~]# passwd rumenz

您可以查看用户家目录和[其他与用户相关的信息]( "检查 Linux 用户信息")例如用户 ID、组 ID、shell 和注释。

[root@rumenz ~]# cat /etc/passwd | grep rumenz

rumenz:x:1001:1001::/data/projects:/bin/bash

在 Linux 中使用家目录创建用户

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

在 Linux 中,每个用户都有自己的UID(Unique Identification Number)。默认情况下,每当我们在Linux, 它分配用户 ID500,501,502,等等…

但是,我们可以使用自定义用户 ID 创建用户-u 选项。例如,以下命令将创建一个用户 navin使用自定义用户 ID1002

[root@rumenz ~]# useradd -u 1002 navin

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

[root@rumenz ~]# cat /etc/passwd | grep navin

navin:x:1002:1002::/home/navin:/bin/bash

在 Linux 中使用用户 ID 创建用户

NOTE:确保用户 ID 的值必须与系统上任何其他已创建的用户不同。

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

同样,每个用户都有自己的GID(Group Identifier)。我们也可以创建具有特定组 ID 的用户-g选项。

在这个例子中,我们将添加一个用户rumenz 带有特定的UIDGID同时在'的帮助下-u-g 选项。

[root@rumenz ~]# useradd -u 1005 -g rumenz rumenz

现在,在 ' 中查看分配的用户 ID 和组 ID/etc/passwd 文件。

[root@rumenz ~]# cat /etc/passwd | grep rumenz

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

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

[root@rumenz ~]# id -gn rumenz

在 Linux 中使用组 ID 创建用户

5. 将用户添加到多个组

这 -G 选项用于将用户添加到其他组。每个组名用逗号分隔,中间没有空格。

在这个例子中,我们添加了一个用户 rumenz 分成多个组,如admins,webadmin,developer.

[root@rumenz:~]# groupadd admins
[root@rumenz:~]# groupadd webadmin
[root@rumenz:~]# groupadd developers
[root@rumenz:~]# usermod -a -G admins,webadmin,developers rumenz
[root@rumenz:~]# useradd -G admins,webadmin,developers paddy

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

[root@rumenz ~]# id rumenz

uid=1000(rumenz) gid=1000(rumenz)
groups=1000(rumenz),1007(admins),1008(webadmin),1009(developers)
context=root:system_r:unconfined_t:SystemLow-SystemHigh

在 Linux 中将用户添加到组

[ You might also like: [How to Add or Remove a User from a Group in Linux]( "How to Add or Remove a User from a Group in Linux") ]

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

在某些情况下,由于某些安全原因,我们不想为用户分配家目录。在这种情况下,当用户登录刚刚重新启动的系统时,其家目录将是 root。当此类用户使用[su 命令时]( "su 命令"),其登录目录将是前一个用户的家目录。

要创建没有家目录的用户,-M 用来。例如,以下命令将创建一个用户 shilpi 没有家目录。

[root@rumenz ~]# useradd -M shilpi

现在,让我们使用[ls 命令]( "Linux ls 命令示例")验证创建的用户是否没有家目录。

[root@rumenz ~]# ls -l /home/shilpi

ls: cannot access /home/shilpi: No such file or directory

在 Linux 中创建没有家目录的用户

7. 创建一个有账户到期日的用户

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

但是,我们可以使用 -e 选项,将日期设置在YYYY-MM-DD格式。这有助于创建特定时间段的临时帐户。

在这个例子中,我们创建了一个用户 aparna 与帐户到期日即27th August 2021YYYY-MM-DD格式。

[root@rumenz ~]# useradd -e 2021-08-27 aparna

接下来,使用'验证帐户和密码的年龄chage用户命令aparna 设置帐户到期日期后。

[root@rumenz ~]# 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

创建具有帐户到期日期的用户

8. 创建一个密码过期的用户

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

在此示例中,我们将设置帐户密码到期日期,即45 days在用户 mansi使用-e-f 选项。

[root@rumenz ~]# useradd -e 2021-08-14 -f 45 mansi

创建具有密码到期日期的用户

9. 添加带有自定义评论的用户

这 -c 选项允许您添加自定义注释,例如用户的full name,phone number/etc/passwd文件。注释可以单行添加,没有任何空格。

例如,以下命令将添加一个用户 mansi 并插入该用户的全名,Manis Khurana, 进入评论区。

[root@rumenz ~]# useradd -c "Manis Khurana" mansi

您可以在 /etc/passwd 文件在评论部分。

[root@rumenz ~]# tail -1 /etc/passwd

mansi:x:1010:1013:Manis Khurana:/home/mansi:/bin/sh

创建全名用户

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

有时,我们添加与登录shell无关的用户,有时我们需要为用户分配不同的 shell。我们为每个用户分配不同的登录 shell-s 选项。

在这个例子中,将添加一个用户rumenz没有登录 shell,即/sbin/nologin 壳。

[root@rumenz ~]# useradd -s /sbin/nologin rumenz

您可以在 /etc/passwd 文件。

[root@rumenz ~]# tail -1 /etc/passwd

rumenz:x:1011:1014::/home/rumenz:/sbin/nologin

使用登录shell创建用户

11. 添加具有特定家目录、默认shell和自定义注释的用户

以下命令将创建一个用户 rumenz带有家目录/var/www/rumenz, 默认shell``/bin/bash并添加有关用户的额外信息。

[root@rumenz ~]# useradd -m -d /var/www/rumenz -s /bin/bash -c "rumenz Owner" -U rumenz

使用家目录和登录shell创建用户

在上面的命令中-m -d选项创建一个具有指定家目录的用户,-s 选项设置用户的默认shell,即/bin/bash.这 -c选项添加有关用户的额外信息和-U 参数创建 / 添加一个与用户同名的组。

12. 添加具有家目录、自定义shell、自定义注释和 UID/GID 的用户

该命令与上面的非常相似,但这里我们将shell定义为 /bin/zsh 和自定义UIDGID给用户rumenz。在哪里 -u 定义新用户的UID(IE100) 而而 -g 定义GID(IE1000)。

[root@rumenz ~]# useradd -m -d /var/www/rumenz -s /bin/zsh -c "rumenz Technical Writer" -u 1000 -g 100 rumenz

使用 UID 和 GID 创建用户

13. 添加具有家目录、无shell、自定义注释和用户 ID 的用户

下面的命令与上面的两个命令非常相似,唯一的区别在这里,我们禁用了一个名为 ' 的用户的登录 shellavishek 有一个习惯User ID(IE1019)。

这里 -s 选项添加默认shell``/bin/bash,但在这种情况下,我们将登录设置为 /usr/sbin/nologin。这意味着用户 rumenz 将无法登录系统。

[root@rumenz ~]# useradd -m -d /var/www/rumenz -s /usr/sbin/nologin -c "rumenz 入门小站" -u 1019 rumenz

使用 UID 和 Nologin 创建用户

14. 添加具有家目录、Shell、设置包含初始框架文件目录/ 注释和用户 ID 的用户

此命令的唯一变化是,我们使用了 -k 设置包含初始框架文件目录的选项,即/etc/, 不是默认的/etc/skel.我们还使用了 -s 选项定义不同的shell/bin/tcsh给用户rumenz

[root@rumenz ~]# useradd -m -d /var/www/rumenz -k /etc/ -s /bin/tcsh -c "No Active Member of rumenz" -u 1027 rumenz

使用shell和 UID 创建用户

15. 添加无家目录、无 Shell、无组和自定义注释的用户

以下命令与上面解释的其他命令非常不同。这里我们使用了 -M创建一个没有用户家目录和' 的用户的选项-N 参数用于告诉系统只创建一个用户名(没有组)。这 -r 参数用于创建系统用户。

[root@rumenz ~]# useradd -M -N -r -s /bin/false -c "rumenz Member" rumenz

使用 NoLogin 和组创建用户

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

# useradd

近期热文

linux中计算行数,字数,字符数的10个wc命令示例

linux中使用 head,tail和cat命令高效处理文件

linux中7个有趣的ls命令技巧

linux中grep命令的12个实际例子

linux中find命令的35个实际例子

linux中10个有用的du命令文目录,磁盘使用情况

linux中检查磁盘空间的12个有用的df命令

linux下的/etc/passwd详解

在Linux /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。

类似于下面的例子:

从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

“用户名”
代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(😃,因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。

“口令”
一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

“用户标识号”
是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

“组标识号”
字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。

“注释性描述”
字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。

“主目录”
也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。

各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。

常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。

系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。

利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux系统要求只有那些在系统中登记了的程序才能出现在这个字段中。系统中有一类用户称为伪用户(psuedousers),这些用户在Linux /etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。常见的伪用户如下所示。

伪用户含义
包括:

bin 拥有可执行的用户命令文件

sys 拥有系统文件

adm 拥有帐户文件

uucp UUCP使用

lplp或lpd 子系统使用

nobody NFS使用

拥有帐户文件

除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit,cron,mail,usenet等,它们也都各自为相关的进程和文件所需要。

由于Linux /etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高

的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。只有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。

 

入门小站
全栈入门知识
169篇原创内容
公众号
收录于合集 #Linux入门指南
 231
下一篇linux中14个有趣的排序命令示例
阅读原文
阅读 1131
posted @ 2022-08-14 19:38  往事已成昨天  阅读(403)  评论(0编辑  收藏  举报