Chinaunix首页 | 论坛 | 博客
  • 博客访问: 282746
  • 博文数量: 69
  • 博客积分: 2946
  • 博客等级: 少校
  • 技术积分: 800
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-09 04:15
文章分类

全部博文(69)

文章存档

2013年(6)

2012年(16)

2011年(18)

2010年(29)

分类: LINUX

2011-09-09 01:26:11

在用户登录系统时侯,用到最主要的文档就是/etc/passwd、/etc/shadow 两个文档。
介绍之前,我们可以查看这两个文档的基本情况:
  1. [huang@myhost/etc]$ ls -ld ./passwd
  2. -rw-r--r-- 1 root root 509 Sep 8 23:14 ./passwd

  3. [huang@myhost/etc]$ ls -ld ./shadow
  4. -rw------- 1 root root 287 Sep 8 23:56 ./shadow
用户登录简单流程:
用户在login中输入用户名和密码,系统首先会在/etc/passwd文件中查找用户名,如果文件里没有该用户名,则返回未登录状态;如果有该用户,从文件中读取用户UID、GID、用户家目录和shell。然后到/etc/shadow文件中核对该账户的密码是否与该文件中记录相匹配,匹配登录成功,用户转到shell输入下;否则转到未登录状态。从上面可以看到/etc/shadow文件普通用户是不可读的,只有root有读写权限,并且文件拥有者为root,文件所属用户组为root,这种权限设置主要就是为了保障记录有账号信息的文件安全,不能轻易被人看到。

下面来仔细看一下这两个文件内容(部分内容省略):
  1. [huang@myhost/etc]$ vim ./passwd
  2.            ......
  3. root:x:0:0:root:/root:/bin/bash
  4. huang:x:1000:1000::/home/huang:/bin/bash
  5.            ......
可以清晰的看到,每一段对应着一个用户,而每个用户对应着7个字段,下面分别介绍每个字段的具体含义:
第一字段:
huang          用户名
第二字段:
x              表示用户密码存放在文件/etc/shadow里
第三字段:
1000           用户huang的UID
第四字段:
1000           表示用户huang所属的用户组ID为1000
第五字段:
             这个字段为用户信息说明栏,并没有很重要的用途
第六字段:
/home/huang    用户huang的家目录,用户存放的文件和软件的配置的地方
第七字段:
/bin/bash      表示用户huang使用的shell为bash,在/bin目录下
从上面7个字段的内容来分析一下root这一行:
用户名为:root,密码存放在/etc/shadow文件里面,用户UID和组GID都为0,用户说明信息栏为root,家目录为/root,使用的shell为/bin/bash。

下面我们再来看另外一个很重要的文件:/etc/shadow。为了保障系统的安全,这个文件默认权限:root读写,其他用户不可读。因此要查看该文件,必须得把权限提升到root级别.
  1. [huang@myhost/etc]$ sudo vim ./shadow
  2. root::15097::::::
  3. bin:x:14871::::::
  4. dbus:!:15097:0:99999:7:::
  5. huang::15225:0:99999:7:::
  6. avahi:!:15106::::::
  7. hal:!:15106:0:99999:7:::
  8. test:!:15225:0:99999:7:::
从上面看到,每一行都有9个字段,跟解释/etc/passwd文件一样,来解释这个文件每个字段的具体含义:
第一字段:
huang  用户名
第二字段:
     密码字段,由于这台电脑为我个人电脑,我天生就是个懒人,所以我把密码给
                 删掉了,每次输入用户名再加ENTER键就OK了,纯粹图简单而已.但是如果是
                 服务器或者多人使用的电脑就不能这样搞了,切记!
第三字段:
15225  记录的是最近修改密码的时间。呃? 是真是假阿? 咋看上去这明明是数字,
                 怎么会是时间呢?解释一下,这是已经规定了的,这个数字代表的是从1970
                 年1月1日(作为1)算起到我最近修改密码的天数,如果大家有闲情可以算。
第四字段:
0      表示在多少天后才能修改密码,意思就是说,在这个期限内,用户是不能自
                 己修改密码地。主要是给那些吃饱没处发泄的那些儿郎,闲的闷骚,没事把
                 密码反复的改过来改过去,改过来改过去。
第五字段:
99999  表示账号过期的时间,99999表示该账号在我有生有之年有是有不会过期
                 的,你懂的!
第六字段:
     表示账号在过期7天之前就会给出通知
第七字段:
     表示账号失效宽限时间,意思就是说,用户在账号密码过期之后,在该字段
                 的天数之内还能暂时的等录,如果超过了这个天数,还没有修改密码,以后
                 就别等了!
第八字段:
     账号的失效日期,这个字段在有些收费服务中使用,像什么临时账号啊。格
                 式跟第三个字段一样,都是从1970年1月1日(为第1天)算起到终止的时间总
                 共的天数。
第九字段:
空     该字段为保留字段,可能在某年某月某日新定义了某个新用途,俺现在就不
                 得而知了


补充:
在正常情况下第二个字段是非空的,而是一串看起来是毫无规律的字服串,一般情况下是将用户密码经MD5处理后的摘要值,这个比直接存储用户密码要俺全一些,但是这也不是绝对的安全,而且并不是所有的都是经果MD5处理的,有些是用其他加密算法,其安全性本质上没有多少提高.当然,系统是允许用户自己更改算法的.

阅读(2128) | 评论(2) | 转发(4) |
给主人留下些什么吧!~~

hbj_20082011-09-16 23:54:30

tiktao: 辛苦了,辛苦了.....
哈哈,共同学习,一起进步~~~

tiktao2011-09-10 12:06:33

辛苦了,辛苦了