Linux—用户账号

用户登录流程

  1. 先在/etc/passwd文件内寻找是否存在该用户,没有则跳出,若有则将该账号对应的UID和GID(在/etc/group中)读出来。该账号的主文件与shell设置也一并读出。
  2. 然后是核对密码表,系统会进入/etc/shadow内找出对应的账号与UID,然后比对用户输入的密码与文件内保存的密码是否相同。

/etc/passwd文件结构

该文件中的每一行都代表着一个账号。有几行就代表系统中有几个账号。每个Linux系统该文件的第一行都是系统管理员的账号。

每行有7个字段,字段之间有:隔开,分别是:

  • 账号名称:就是账号,对应UID,例如root用户的UID是0。
  • 密码:早起UNIX系统的账号密码就是存放在这个字段内,但是这个文件的特性是所有应用都能读取,于是密码字段的数据就被放到了/etc/shadow文件内了,而该字段就存放了一个“X”。
  • UID:用户标识符,Linux对这个UID有一定限制。当UID为0的时候,代表这个账号是系统管理员。而UID从1~499都是系统账号的UID,500以上就是可登陆账号的UID。
  • GID:就是Group ID,与/etc/group有关,该文件的结构与etc/passwd差不多,就是用来规定组名与GID的对应而已。
  • 用户信息说明:用来解释这个账号的意义
  • 主文件夹:只是用户的主文件夹
  • Shell:指定用户默认使用的Shell

etc/shadow文件结构

很多程序的运行都跟权限有关系,而权限又跟UID、GID有关系,因此各程序都需要能够读取/etc/passwd来了解不同账号的权限。如果密码之间保存在/etc/passwd中就很容易被窃取。于是才有了/etc/shadow这个文件将密码单独保存。这个文件的权限是600。

这个文件中的内容也是一行对应一个账号,而一行中有9个字段,分别是:

  • 账号名称:因为密码需要与账号配对,所以这个字段必须存在于/etc/passwd
  • 密码:这个字段内的数据才是真正的密码,而且是经过加密的密码。
  • 最近更改密码的日期:该字段记录了最近改动密码的时间
  • 密码不可更改的日期:这个字段记录了这个账号的密码在最近一次被更改之后要经过多长时间才能重新更改。
  • 密码需要重新更改的日期:为了强制用户更改密码,这个字段可以指定在最近一次更改密码后多长时间内需要再次更改密码。用户必须在这个日期内更改密码,否则这个账号的密码将会变为过期。
  • 密码需要更改期限前的警告天数:当密码重新更改的日期快要到的时候,系统回依据这个字段的设置来为用户发出警告。
  • 密码过期后的账号宽限时间:如果在规定的期限内用户没有更改密码,密码就会过期,虽然密码过期了但是该账号还是可以进行其他操作包括登录系统取得bash。**不过如果密码过期了,当用户登录系统时,系统会强制要求用户更改密码。**但是如果连宽限时间都过了,那么用户就无法用这个密码进行登录。
  • 账号失效日期:所谓的账号过期,就是不论用户的密码是否过期,这个账号都不能再使用,这个字段同长是使用在收费系统中。
  • 保留字段

猜你喜欢

转载自blog.csdn.net/hjc256/article/details/88654219