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

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

Linux 中useradd命令的使用的更多相关文章

  1. Linux中exec命令相关

    Linux中exec命令相关 exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. b ...

  2. linux中touch命令参数修改文件的时间戳(转)

    linux中touch命令参数不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件,以下是linux中touch命令参数的使用方法: touch [-acm][-r ...

  3. linux 的useradd 命令的p选项

     linux 的useradd 命令的p选项                错误用法: #useradd   gaojian   -p  gaojian                      #  ...

  4. linux中执行命令权限不够怎样处理

    在linux中执行命令权限不够就要增加权限,先看遇到的情况 查看权限情况 那就赋予权限 执行命令

  5. Linux中监控命令top命令使用方法详解

    收集了两篇关于介绍Linux中监控命令top命令的详细使用方法的文章.总的来说,top命令主要用来查看Linux系统的各个进程和系统资源占用情况,在监控Linux系统性能方面top显得非常有用,下面就 ...

  6. Linux中date命令的各种实用方法--转载

    在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,自己也曾经为时间的各种表示方法和如何修改时间而困惑,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的 ...

  7. linux中查找命令find、locate、whereis、which、type区别

    linux中查找命令find.locate.whereis.which.type区别 1. find Java代码 find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/ ...

  8. Linux中service命令和/etc/init.d/的关系

    Linux中service命令和/etc/init.d/的关系   service xxx启动 /etc/init.d/ 目录下的xxx脚本 如一个脚本名为 mysvc保存在/etc/init.d/下 ...

  9. 13 Basic Cat Command Examples in Linux(转) Linux中cat命令的13中基本用法

    Cat (串联) 命令是Linux/Unix开源系统中比较常用的一个命令.我们可以通过Cat命令创建一个或多个文件,查看文件内容,串联文件并将内容输出到终端设备或新的文件当中,这篇文章我们将会以实例的 ...

随机推荐

  1. Esp8266和HomeKit

    Summary 没有找到合适的简单解决方案,将Esp8266控制的设备连接到HomeKit.所以参照EspEasy实现 HomeKit和Esp8266连接. 连接方式: Raspberry Zero ...

  2. DailyRollingFileAppender-设置文件大小和备份天数

    感谢:http://byx5185.iteye.com/blog/1616034 1.重写FileAppender : package com.bankht.cis.tps.apps.tps.util ...

  3. CPU|MICGPU|FPGA|超算|Meta-data|

    生物医学大数据: 收集数据后对数据的分析,如同看相,而对数据信息的挖掘可以看作是算命.这两个过程是基于算法和软件这类工具之上的. 在存储方面:在硬件上,为了Parallel computing的目的, ...

  4. 挑战中英实时语音翻译——Skype Translator 中文预览版登陆中国

    Translator 中文预览版登陆中国" title="挑战中英实时语音翻译--Skype Translator 中文预览版登陆中国"> 今天,我们正式宣布在中国 ...

  5. cesium入门示例-geoserver服务访问

    1.wms服务访问 //wms服务 viewer.imageryLayers.addImageryProvider(new Cesium.WebMapServiceImageryProvider({ ...

  6. 利用Load命令将本地文本里面的数据导入到MySQL数据库

    摘要:在使用MySQL是我们可能会遇到要向我们的表中插入大量的数据如果都使用以下的语句在命令行输入有点不太切实际,幸好MySQL为我们提供了LOAD命令可以批量的从本地文件向MySQL表中导入数据! ...

  7. Ionic3学习笔记(七)Storage

    本文为原创文章,转载请标明出处 目录 简介 安装 配置 使用 1. 简介 Storage可以很容易的存储键值对和JSON对象.Storage在底层使用多种存储引擎,根据运行平台选择最佳的存储方式. 当 ...

  8. MyBatis之一级缓存及其一级缓存失效

    定义: 一级缓存:本地缓存:与数据库同一次会话(sqlSession)期间查询到的数据会放在本地缓存中,如果以后要获取相同的数据直接从缓存中获取,不会再次向数据库查询数据一个SqlSession拥有一 ...

  9. 用shell脚本新建文件并自动生成头说明信息

    目标: 新建文件后,直接给文件写入下图信息 代码实现: [root@localhost test]# vi AutoHead.sh #!/bin/bash #此程序的功能是新建shell文件并自动生成 ...

  10. SpringBoot之SpringApplication

    简介 可以用于从java主方法中引导和启动Spring应用程序的类,在默认情况下,通过以下步骤来启动应用: 创建一个ApplicationContext实例 注册CommandLineProperty ...