用户管理之用户配置文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/young2415/article/details/90108795

一、用户信息文件

用户信息文件的存放路径是 /etc/passwd,用 vim 查看一下文件内容:
在这里插入图片描述
乍一看好像眼花缭乱的,没有头绪。不过没关系,我们可以利用帮助命令 man 5 passwd 来看一下 passwd 配置文件的作用。

在这里插入图片描述

主要就是看图中圈出来的那两行,它告诉我们,passwd 配置文件的每一行代表一个用户,而每个用户信息的格式如下:

account:password:UID:GID:GECOS:directory:shell

可以看到,每个用户信息有 7 个字段,字段之间用冒号隔开,下面分别解释一下这 7 个字段的含义:

  • 第 1 字段:用户名称

  • 第 2 字段:密码标志。密码标志位如果是 x,代表该用户有密码,密码文件存放在 /etc/shadow 中;如果密码标志位为空,系统会认为该用户没有密码,在登录的时候不用输入密码就可以登录,但是这种方式只能在本地登录,不能通过远程登录。

  • 第 3 字段:用户 ID。ID 范围不同代表的用户类型不同:

    • 0:超级用户
    • 1-499:系统用户(伪用户)
    • 500-65535:普通用户

    伪用户是供系统启动一些命令或服务调用的,对于系统至关重要,这些用户千万不能删除!

    系统其实是通过用户 ID 来识别不同的用户的。如果你想把一个普通用户变成超级用户,只需要把该用户的 ID 改成 0 就可以,这时系统会把所有 ID 相同的用户当成一个用户来看待。

  • 第 4 字段:GID(用户初始组 ID)

  • 每一个用户被创建的时候,系统都会创建一个和这个用户名相同的组,该用户默认属于这个组。用户的初始组可以更改,但是只能有一个;还有一个概念是「附加组」,是指用户可以加入多个其他的用户组,并拥有这些组的权限,用户的附加组可以有多个。

    如果你想知道该用户的初始组 ID 到底对应着哪一个组,可以查看 /etc/group 文件。

  • 第 5 字段:备注。

  • 第 6 字段:用户的家目录。即用户的初始登录位置。普通用户的家目录是 /home/用户名/,超级用户的家目录是 /root/

  • 第 7 字段:登录之后的 Shell。Shell 就是 Linux 的 命令解释器。如果想禁用某个用户,可以将该用户的命令解释器改成除 /bin/bash 以外的任何字符串,这样,用户就无法登录了。如果想解除禁用,把他的命令解释器再改成 /bin/bash 就可以了。

二、影子文件

顾名思义,该文件是前面讲过的用户信息文件的影子文件,存放路径是 /etc/shadow
在这里插入图片描述
这个文件的权限是 000,但是 root 用户不受权限的限制,可以读写该文件的内容。我们先用 vim 查看一下文件内容:
在这里插入图片描述
与用户信息文件一样,该文件也是每一行代表一个用户,不同的是,该文件的每一行有 9 个字段,下面一一解释这 9 个字段的含义。

  • 第 1 字段:用户名。

  • 第 2 字段:加密密码。加密算法为 SHA512 散列加密算法,如果密码位是「!!」或「*」,代表没有密码,不能登录。

  • 第 3 字段:密码最后一次的修改日期。使用 1970 年 1 月 1 日作为标准时间。每过一天时间戳加 1。

  • 第 4 字段:允许修改密码的日期间隔,以「天」为单位。比如说:如果是 0,则表示没有限制;如果是 10,则表示假如今天修改了密码,要等到至少 10 天之后才能再次修改密码。

  • 第 5 字段:密码有效期,也是以「天」为单位

  • 第 6 字段:密码修改到期前的警告天数。也就是说,假设第 5 字段是 90,第 6 字段是 7,那么从更改密码之后的第 83 天开始,每次登录的时候,Linux 都会发出警告,提醒你更改密码。

  • 第 7 字段:密码到期之后的宽限天数。如果为空或者 0,表示密码到期后立即失效,用户将无法登录;如果是 -1,表示密码到期后永远不会失效,用户依然能使用该密码继续登录。

  • 第 8 字段:用户有效期,用时间戳表示。也就是从 1970 年 1 月 1 日开始算的第多少天。用户有效期到了之后,不管该用户的密码到没到期,都不能再登录了。

  • 对于人来说,时间戳可能不是那么直观,我们更习惯于用年月日表示日期。好在 Linux 中有相关的命令可以实现时间戳和年月日的相互转换。

    date -d "1970-01-01 17993 days" //把16066转换成日期
    echo $(($(date --date="2019/05/05" +%s)/86400+1)) //把2019/05/05转换成时间戳
    
  • 第 9 字段:保留。

三、组信息文件

组信息文件中存放的是组的相关信息,存放路径是 /etc/group

在 Linux 中,每创建一个用户,都会创建一个组名跟用户名一样的组,作为该用户的初始组。

Windows 中是每创建一个用户,都会默认放在 Users 组里。

用 vim 查看一下文件内容:
在这里插入图片描述
该文件的每一行代表一个组,每个组信息用 4 个字段,下面详细介绍一下每个字段的含义:

  • 第 1 字段:组名。
  • 第 2 字段:密码标志。这里的密码指的是组密码。组密码文件存放在 /etc/gshadow 中。组密码有什么作用呢?本来组成员是只有 root 用户可以添加删除的,当 root 用户给某个组设置了组管理员和组密码,组管理员就可以往这个组里加减成员。这样一来就相当于给这个组认命了一个组长,这个组长可以行使 root 用户添加删除组成员的权利。但是这样会削减系统的安全性,所以并不推荐使用组密码。
  • 第 3 字段:GID。即组 ID。
  • 第 4 字段:组中附加用户。

四、其他与用户管理相关的文件

用户的家目录

用户的家目录是用户的初始登录位置。

  • 普通用户:/home/用户名/,所有者和所属组都是此用户,权限是 700
  • 超级用户:/root/,所有者和所属组都是 root 用户,权限是 550

用户的邮箱

路径:/var/spool/mail/用户名

用户模板目录

路径:/etc/skel/

在创建用户时,该目录中的文件会被复制到用户的家目录下。也可以手动在该目录下创建一些自定义的文件,在创建用户时,自定义的文件也会被复制到用户的家目录下。

猜你喜欢

转载自blog.csdn.net/young2415/article/details/90108795