Linux 中useradd命令的使用

2019/04/10 10:10
阅读数 10

     Linux 系统中通常都是root用户具有超级权限,超级用户root一般是不需要创建的,然而很多时候root用户不是任何人都可以使用的,毕竟最高权限的用户,任意使用的话,会对系统造成很多不必要的破坏。那么就需要创建给不同人创建用户进行Linux系统的访问,或者针对不同的应用程序使用不同的用户。这时候有人会说,创建用户很简单啦,不就直接使用useradd 或者adduser就完事啦,确实是这样的,但是就这么简单的一个命令,却有不同的使用方式或者有不同的方法来创建用户。下面通过15个案例来看一这个useradd或者adduser的不同使用方式。

   由于Linux系统的版本以及操作系统类型不大一样,不同版本的以及不同类型的操作系统的命令具体还要参照对应的文档,这里只是简单的使用centos来进行举例。

   在Linux系统中执行‘useradd’命令,主要就是完成以下三个过程:

  1. 为新创建的用户帐户编辑/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow文件。
  2. 为新用户创建用户主目录(home目录)。
  3. 设置用户主目录(home目录)的权限和所有权.

创建用户命令的基本语法是:

useradd [options] username

 在本文中,我们将向您展示在Linux中最常用的15个useradd命令及其实际例子。我们把这一节从基本用法到高级用法分为两部分

  1. 第一部分:主要通过10个例子来展示useradd的基本用法
  2. 第二部分::通过5个例子来展示useradd的高级用户

第一部分:useradd命令的10个基本用法

1,如何增加一个用户在Linux中

在Linux系统中新增一个用户,可以使用useradd或者adduser命令后面加上一个用户名来进行新增。这个用户名是用于系统登录的,因此这个用户名必须是唯一的,如果系统中已经有用户了,就不能进行创建了。

例如,增加一个新的用户test1,使用以下命令。

[root@localhost ~]# useradd test1

当我们创建完test1用户之后,这个时候用test1用户来进行登录,登录不了的,由于该用户我们不知道用户的密码,登录不了的,那如何给用户添加密码呢?通过下面命令进行添加。

[root@localhost ~]# passwd test1
Changing password for user test1.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

用户创建之后默认会把用户自动添加到/etc/passwd文件中, 这个文件用来存储用户的信息。

test1:x:1002:1002::/home/test1:/bin/bash

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

  1. 用户名:用于登录系统的用户登录名。长度应该在1到32字符之间。
  2. 密码:以加密格式存储在/etc/shadow文件中的用户密码(或x字符)。
  3. 用户ID (UID):每个用户必须有一个用户ID (UID)用户标识号。默认情况下,UID 0保留给根用户,1-99之间的UID保留给其他预定义帐户。此外,UID的范围从100-999保留系统帐户和组。
  4. 组ID (GID):存储在/etc/group文件中的主组ID (GID)组标识号。
  5. 用户信息:该字段是可选的,允许您定义关于用户的额外信息。例如,用户全名。该字段由' finger '命令填充。
  6. 主目录:用户的主目录的绝对位置。
  7. Shell:用户Shell的绝对位置,即/bin/bash。

2,创建一个具有不同主目录的用户

通常情况下,在Linux操作系统中创建一个用户默认创建用户的目录在home目录下,就比如上面创建的用户主目录就默认就是/home/test1目录。

但是可以使用“-d” 可选参数来改变用户的主目录的位置,例如创建一个test2用户在/tempfile/user1.首先这个/tempfile/user1必须是已经在系统创建好的目录也可以是其它目录。

[root@localhost /]# useradd -d /tempfile/user1/ test2

这个时候命令执行成功之后,我们在回去看一下/etc/passwd 中的目录

[root@localhost /]# cat /etc/passwd | grep test2
test2:x:1003:1003::/tempfile/user1/:/bin/bash

3,创建一个具有不同用户ID的用户

在Linux中,每个用户都有自己的UID(惟一标识号)。默认情况下,每当我们在Linux中创建一个新用户帐户时,它都会分配用户500、501、502等等。。。

但是,我们可以创建用户的自定义用户id与' -u '选项。例如,下面的命令将创建一个用户' test3'与自定义用户id '996 '。

[root@localhost /]# useradd -u 996 test3

接下来让我们来验证一下,该命令执行成功是否创建了用户id为996的用户test3.

root@localhost /]# cat /etc/passwd |grep test3
test3:x:996:1005::/home/test3:/bin/bash

注意:确保用户ID的值必须与系统中任何其他已创建的用户唯一。

4,创建具有特定组ID的用户

类似地,每个用户都有自己的GID(组标识号)。我们还可以使用-g选项创建具有特定组ID的用户。

在本例中,我们将在“-u”和“-g”选项的帮助下同时添加具有特定UID(不存在的用户id)和GID(必须存在的组)的用户“test4”。

[root@localhost~]# useradd -u 1005 -g 1000 test4

执行完之后, 我们来验证一下,通过查看/etc/passwd文件。

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

5,将一个用户添加到多个组

使用useradd命令加上“-G”选项将用户添加到其他组。每个组名由逗号分隔,中间没有空格。

在本例中,我们将用户“test5”添加到多个组中,如管理员、webadmin和开发人员。

[root@localhost /]# useradd -G webadmin,devloper,dba test5

接下来,使用id命令验证分配给用户的多个组

[root@localhost /]# id test5

6,添加一个没有主目录的用户

在某些情况下,由于一些安全原因,我们不希望为用户分配主目录。在这种情况下,当用户登录到刚刚重新启动的系统时,其主目录将是根目录。当该用户使用su命令时,其登录目录将是以前的用户主目录。

若要创建没有主目录的用户目录,则使用' -M '。例如,下面的命令将创建一个没有主目录的用户' test6'。

[root@localhost ~]# useradd -M test6

接下来我们使用ls命令来验证一下用户test6是否有主目录。

[root@localhost ~]# ls -l /home/test6
ls: cannot access /home/test6: No such file or directory

7,创建一个具有过期时间的用户

默认情况下,当我们添加用户使用’ useradd‘命令时,用户帐户永远不会有过期时间。它们的有效日期被设定为0(意思是从未过期)。

不过,我们可以用“e”来设置有效期。选项,它将日期设置为yyyy-mm-ddd格式。这有助于为特定时间段创建临时帐户。

在这个例子中,我们创建了一个用户‘test7‘用户到期日为2020年3月21日,格式为yyyy-mm-ddd。

[root@localhost /]# useradd -e 2020-03-21 test7

其次,在设置帐户到期日期后,使用“chage”命令为用户“test7”验证帐户和密码的年龄。

[root@localhost /]# chage -l test7

8,创建一个具有密码过期时间的用户

useradd命令的‘-f‘参数用于定义密码过期后的天数。当密码过期时,用户帐户立即停止活动。默认情况下,将密码过期值设置为-1意味着永不过期。.

在本例中,我们将为用户设置一个帐户密码到期日期,即45天。使用’-e‘和’-f‘选项

[root@localhost /]# useradd -e 2020-03-20 -f 45 test8

9,创建一个自定义注释的用户

useradd命令的‘-c‘选项允许您添加自定义注释,如用户全名、电话号码等到/etc/ passwd;)文件中。可以将注释添加为不带空格的单行

例如,下面的命令将添加一个用户test9‘并将该用户的全名test9 devloper插入到评论字段中。

[root@localhost~]# useradd -c "test9 devloper" test9

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

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

10,更改用户登录Shell

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

在本例中,将添加一个用户没有登录shell,即‘/sbin/nologin‘shell.

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

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

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

第二部分:useradd命令的5个高级用法

11,添加一个具有特定主目录、默认Shell和自定义注释的用户

下面的命令将创建一个用户'test11 '与主目录' /tempfile/user11',默认shell为/bin/bash,并添加额外的信息用户。

[root@localhost ~]# useradd -m -d /tempfile/user11 -s /bin/bash -c "dba Owner" -U test11

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

12,添加具有主目录、自定义Shell、自定义注释和UID/GID的用户

该命令与上面的命令非常相似,但是这里我们将shell定义为' /bin/zsh ',并将自定义UID和GID定义为用户' test '的用户id和用户组id。其中“-u”定义新用户的UID(即1204),而“-g”定义GID(即1000)。

[root@localhost /]# useradd -m -d /tempfile/user12 -s /bin/zsh -c "devloper owner" -u 1204 -g 1000 test12

13,添加一个具有主目录、没有Shell、自定义注释和用户ID的用户

下面的命令与上面的两个命令非常相似,唯一的区别是这里,我们禁用登录shell到一个名为' test13 '的用户自定义用户ID(即1026)。

这里' -s '选项添加了默认的shell /bin/bash,但在本例中,我们将login设置为' /usr/sbin/nologin '。这意味着用户' test13 '将无法登录到系统。

[root@localhost ~]# useradd -m -d /tempfile/user13 -s /usr/sbin/nologin -c "dba enginer" -u 1026 test13

14,添加具有主目录、Shell、自定义Skell/注释和用户ID的用户

这个命令中唯一的变化是,我们使用' -k '选项来设置自定义框架目录,即/etc/custom.skell,不是默认的 /etc/skel。我们还使用了' -s '选项来定义不同的shell,即/bin/tcsh来定义用户' test14 '。

[root@localhost ~]# useradd -m -d /tempfile/user14 -k /etc/custom.skell -s /bin/tcsh -c "No Active Member of test14" -u 1212 test14

15,添加一个没有主目录、没有Shell、没有组和自定义注释的用户

下面的命令与上面介绍的其他命令非常不同。这里我们使用' -M '选项来创建没有用户主目录的用户,并使用' -N '参数来告诉系统只创建用户名(没有组)。' -r '参数用于创建系统用户。

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

好了,今天的分享就到这,小弟不才,望大家有什么讲解不到位或者有问题的,请多指教,欢迎留言区评论。有喜欢的朋友记得收藏或者点赞哦,最后很多知识分享到微信公众号井壹数码,希望感兴趣的朋友关注一下。多谢各位。

原文出处:https://www.cnblogs.com/Hackerman/p/12535719.html

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部