linux之账号管理

linux系统上的用户登录主机获取shell的环境工作时,是如何进行的呢?

首先在PC前利用tty1~tty7终端机提供的login接口,并输入账号和密码进行登录,输入账号和密码后系统做了什么呢?

a、寻找 /etc/passwd 里面是否有输入的账号,如果没有则跳出,如果有则将该账号对应的 UID 和 GID(在 /etc/group)读出来,此外将该账号的主文件夹和shell设置也一起读出

b 、核对密码表,此时linux会进入到 /etc/shadow 里面找到对应账号的 UID,然后核对刚才输入的密码

c、一切正确,进入shell控制阶段

1、/etc/passwd 文件结构解析

该文件的每一行都代表一个账号,有几行就有几个账号,里面有很多账号是系统运行所必要的账号


由于每一行的结构相同,这里分析第一行作为示例,每个字段是以 “ :”进行分割的,共有7个字段

root  :x    :0   :0  :root  :/root  :/bin/bash
 1     2    3     4    5      6         7

字段1:root 为账号,用来对应 UID

字段2:密码,早起的UNIX系统的密码放置在该字段上,因为这个文件的特性是所有程序都能访问和读取,这样密码很不安全,              就将密码统一放置到 /etc/shadow中了,所以这里看到一个未知数 x.

字段3:UID ,如果UID为0,表示这个账号是系统管理员,1-499保留给系统使用的UID,500-65535给一般用户使用

字段4:GID,这个和/etc/group 有关,规定组名和 GID的对应关系

字段5:用户信息说明列

字段6:用户的主文件夹,该例子中,root账号的主文件夹是/root,普通用户的主文件夹默认为 /home/yourIDname中

字段7:shell,当用户登录系统后就会取得一个shell来与系统的内核通信以便进行用户的操作,为什么shell会使用bash呢?就               是这个字段指定的

2、/etc/shadow 文件结构解析

        程序的运行和文件的权限有关,而权限和  UID 和 GID 有关,因此程序要读取 /etc/passwd 来知道不同账号的权限,因此 /etc/passwd 的权限需要设置为 -rw-r--r--这样的情形。为了安全将密码移至 /etc/shadow中


root :$6$0PGn...F8W.17D. :17600  :0   :99999  :7   :  :  :
  1         2                3    4      5     6   7  8  9

每一行表示一个账号,共有9个字段,同样也是以 “:”进行字段分隔的

字段1:账号,必须与 /etc/passwd相同才可以

字段2:密码,经过加密之后的密码

字段3:最近更改密码的日期,示例中为 17600,因为时间的基准是1970年1月1日,到1971年1月1日为366

字段4:密码不可被更改的天数,相对于字段3而言,这个字段记录了账号的密码在最近一次更改户需要多少天之后才可以被更改

            ,为0表示随时可以更改,如果设置为10,设置密码之后,表示10天之内不能被更改

字段5:密码需要重新更改的天数,相对于字段3,为了强制用户不定期更改密码,这个字段可以指定在最近一次更改密码后在多              少天内需要再次更改密码,因此设置之后,必须在这个天数内更改密码,否则这个账号的密码会变为过期特性,如果是               99999,就是293年,表示密码更改没有强制之意

字段6:密码需要更改期限前的警告天数,相对于字段5,依据字段5,系统设置发出告警通知用户再过多少天密码过期的天数

字段7:密码过期后的账号宽限时间(密码失效日),像对于字段5,更新日期(字段3) + 重新更改日期(字段5) = 密码有效期日                期,过了该期限,登录账号是系统会强制账号修改密码

字段8:账号失效日期,相对于字段5,也是以1970位时间基准,这个个账号在此字段规定的日期后,将无法使用

字段9:保留字

大篇幅的文字容易混淆,这里举个例子加深理解:

1、最近一次修改密码的时间为2009/02/24,即字段3的值

2、密码不可更改的天数设置为5天,即字段4为5,意味着2009/03/01以前不能修改该账户自己的密码

3、密码需要重新更改的天数为60天,即字段5设置为60天,所以表示日期为2009/04/25,所以用户必须在2009/03/01到               2009/04/25之间的60天内修改密码,否则该密码过期

4、警告日期为7天,即字段6为7,即是密码过期的前7天,表示在2009/04/19-2009/04/25之间,如果用户没有修改密码,系         统会提示修改密码,如果一直到2009/04/25一直没有修改密码,则密码就过期了

5、字段7为5,表示密码过期后的宽泛期,由于在2009/04/25之前都没有修改密码,导致密码过期,但是由于有5天的宽泛期

      因此用户还可以使用原来的账号和密码进行登录,不过登录时会出现强制修改密码的情况

3、有效与初始用户组

认知了账号和密码所在文件后,那用户组的配置文件存放在何处呢?

在/etc/passwd 中第4个字段为 GID ,此时需要了解到 /etc/group 和 /etc/gshawod文件


同上面,也是以":"进行分隔

字段1:用户组名

字段2:用户组密码,同样密码移至到 /etc/gshadow中

字段3:GID,和 /etc/passwd 中的第4个字段对应

字段4: 此用户组支持的账号名称

             一个账号可以加入到多个用户组中,如daemon账户中加入了daemon用户组,用户组之间使用逗号,不要有空格


切换到普通账户下,查看其用户组,发现账户rhx支持的用户组为 rhx ,通过vim命令进入到 /eyc/group中,找到GID 为500 的用户所对应的账号,但是这里显示的是空的,因为这是初始用户组,用户一登录就会主动获得,不需要在字段4上填写该用户所支持的账号名称了


那什么是有效用户组合初始用户组呢?

所谓的 GID 就是对应的初始用户组,用户一登录就会拥有这个用户组的相关权限

那什么是有效用户组呢?

通过groups命令查询

[root @localhost ~]#groups

查询的结果中第一个组就是用户的有效组了,可以不可以修改有效组呢,当然可以,使用命令newgrp 

[root @localhost ~]#newgrp users

/etc/gshadow


字段1:用户组名

字段2:密码

字段3:用户组管理的账号

字段4:用户组所属账号


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值