Linux-用户帐号与登录

Linux-用户帐号与登录

Posted by Jinliang on December 29, 2017

在通过帐号和密码登录Linux主机时,系统内部做了什么呢?

  1. 首先在/etc/passwd中寻找帐号是否存在,如果不存在,则跳出;如果存在,则读出uid和gid(在etc/group中),并且读取帐号的主文件夹和shell设置。
  2. 接下来是核对密码是否正确。Linux系统进入/etc/shadow文件同听过帐号和uid查找到密码,然后核对与输入的密码是否一致。
  3. 如果前两布正确,就能进入到shell控制管理阶段了。

了解到上述过程后,发现登录主机时主要用到/etc/passwd和/etc/shadow这两个文件,所以这两个文件必须让系统读取,许多系统攻击者将特殊帐号写到/etc/passwd中。如果要备份linux系统,那么这两个文件也一定要备份。

既然这两个文件那么重要,那么就来解析这两个文件:

/etc/passwd的文件结构 文件结构:每一行都代表一个账号,有几行就代表几个帐号,不过,里面包含了系统运行所必须的帐号,例如bin,daemon,adm,nobody等,不能随意删除这些帐号,文件部分内容如下: 这里写图片描述

但是每一行的每一个字段具体代表什么意思呢,现在让我们具体解析一下: 以第一行root用户为例:

root:x:0:0:root:/root:/bin/bash

每一个字段以“:“分隔,也就是一行有七个字段,分别是 1.帐号名称 也就是帐号。用来对应uid的,例如root对应的uid就是0(第三字段) 2.密码 早期的UNIX系统的密码放在这个字段上,但是这个文件的特性是所有程序都能够读取,这样的话数据信息很容易被窃取,因此后来将密码数据放在了/etc/shadow中了,所以这里会看到一个“x“。 3.用户标识符 也就是uid,分别三个区间。具体可以在我的博客中的“Linux-用户与用户组“中了解。需要注意的是,系统管理员不仅仅只有root一个,主要uid为0,她就是系统管理员。 4.gid 与/etc/group有关。/etc/group中的内容和/etc/passwd中的内容差不多,只是它用来规定组名和Gid的对应而已。 5.用户信息说明列 没有中言用途,用来解释帐号的意义。如果使用了finger的功能的时,这个字段可以提供很多的信息。 6.主文件夹 这是用户的主文件夹,root的主文件夹就是/root,所以在root登录后,就会立刻跑到/root中。 7.Shell 用户登录系统后就会取得一个shell来与系统内核通信以进行用户的操作任务。为何默认shell使用bash呢?就是在这个字段指定的。 /sbin/nologin可以让帐号无法取得shell环境的登录操作,也可以用来制作纯pop邮件帐号者的数据!

/etc/shadow的文件结构 它的权限为-rw——-,下面是root用户的在/etc/shadow的相关数据

root:$6$6ZfbJcS9ZVIJgNAB$cxudAh89VDA6y8.WClOTN/GgwfpfAETpezNNS7I97lQdFxjlC6roIwjTMnTlGD//drx9NfZQbOYMXSX5YR6QX.::0:99999:7:::

shadow同样以:分隔,一共有9个字段,九个字段的用途如下: 1.帐号名称 密码需要与帐号对应,并且帐号要与/etc/passwd中的一致 2.密码 经过加密的密码。这些加密的密码很难被破解,但是可以被破解。于是设置权限使得只有root才可以读写。 密码长度的不同可能导致密码失效,因此很多软件通过在字段前加“!“或“*“改变密码长度,就会让密码暂时失效。 3.最近更改密码的日期 记录改变密码的日期。LInux的日期计算是将1970年1月1日作为1而累加的。 4.密码不可被更改的天数 0代表随意更改。 5.密码需要重新更改的天数 必须要在这个天数内重新设置密码,否则这个帐号的密码将会变成过期特性。 6.密码需要更改期限前的警告天数 7.密码过期后的帐号宽限时间(密码失效时间) 8.帐号失效日期 9.保留,看以后有没有新功能加入