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/bash1     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:用户组所属账号

linux之账号管理相关推荐

  1. linux 文件夹换所属用户,Linux中账号管理之权限管理(下)

    linux中的账号管理我们在前面两张已经介绍了一些用户和组的相关概念,常用的配置文件,命令的使用.现在我们来看看账号管理中最傲娇的部分就是我们的权限管理. 一.简单介绍权限的概念 以install.l ...

  2. Linux学习-账号管理

    新增与移除使用者: useradd, 相关配置文件, passwd, usermod, userdel 我们登入系统时会输入 (1)账号与 (2)密码,所以建立一个可用的账号同样的也需要这两个数据.那 ...

  3. linux设置账号权限设置,Linux账号管理与ACL权限设置

    1:UID和GID 用户ID:在/etc/passwd中 群组ID:在/etc/group中 2:有效群组与初始群组 初始群组:/etc/passwd文件里面的GID 有效群组: groups #查看 ...

  4. Linux 之旅 11:Linux 账号管理与 ACL 权限设置

    Linux 之旅 11:Linux 账号管理与 ACL 权限设置 Linux 的账号与用户组 使用者识别码:UID与GID 关于Linux的账号管理,有两个数字最为重要: UID:(User ID), ...

  5. Linux的基本学习(十)——账号管理与ACL权限设置

    前言: 继续学习Linux,账号管理与ACL权限设置 Linux的账号与用户组 用户标识符:UID与GID 虽然我们登陆Linux主机的时候,输入的是我们的账号,但是其实Linux主机并不会直接认识[ ...

  6. Linux学习笔记(四)账号管理之管理用户账号

    1.管理用户账号:每一个登录Linux操作系统的用户在系统中都应该有其对应的注册账号,这些账号记录了用户的信息,如用户名.登录口令.用户目录所在位置.所用的shell.建立时间.权限等信息.其中用户账 ...

  7. Linux系统(简介、文件管理、常用命令、账号管理、c开发工具)

    文章目录 1. Linux系统 2.文件管理与常用命令 2.1 文件和目录的层次结构 2.2 文件和目录命名 2.3 shell文件名通配符 2.4 文件管理 2.4.1 Linux常用文件类型 2. ...

  8. Linux系统的账号管理

    写在前面 作为一个运维工程师来讲,系统下的账号管理是工作中很重要的一个环节,所以了解系统的账号管理还是非常有必要的. 首先,我们要知道对于Linux系统而言,它并不知道你是谁,它仅识别用户的ID号,而 ...

  9. Linux的账号与权限管理

    目录 一.用户账号和组账号概述 1.用户账号分类 2.组账号分类 3.标识号分类 二.用户账号文件 2.1./etc/passwd 2.2./etc/passwd字段分析 2.3.存放保存密码 2.4 ...

最新文章

  1. numpy 滑动窗口取数据
  2. dell跳过开机硬件检测_移动工作站DELL Precision 7740评测连载2:开机初测
  3. elasticsearch-head 谷歌插件以及安装和使用说明
  4. leetcode - 538. 把二叉搜索树转换为累加树
  5. [转]VS 2003 常用快捷键
  6. 虚幻引擎4中的移动设备分析插件
  7. Upload LABS Pass-9
  8. windows 网络编程报错 error LNK2019
  9. Apache Tomcat 再爆严重安全漏洞
  10. app怎么调用mysql数据_数据库: 安装配置数据库,使用Navicat for MySQL和手机APP 连接测试...
  11. python学习(十八)爬虫中加入cookie
  12. 全国重点城市建筑物矢量数据合集四(Shp格式+带高度)
  13. Java从入门到放弃第1天
  14. 数据库表锁死的解决方法
  15. 高性能Java代码的最佳实践
  16. tplink打印机服务器重置,TP-Link TL-WDR7500无线路由器如何打造打印机共享服务器
  17. 计算机桌面怎么自定义,电脑怎么换壁纸自定义
  18. Error creating bean with name ‘servletEndpointRegistrar‘ defined in class path resource
  19. cs起源本地服务器无响应,CS起源上为什么我无法进入有反作
  20. iOS删除项目中未使用的图片资源

热门文章

  1. 猴子吃桃问题 python
  2. animation动画的使用
  3. 洛谷——P1183 多边形的面积
  4. 02html和css
  5. MySql 长时间读数据发生超时的异常 Mysql Reader Exception TimeOut expired
  6. const的用法,特别是用在函数前面与后面的区别
  7. paho mqtt 在某平台sdk应用上发送数据定时器超时问题
  8. Hyperledger Fabric 核心模块(2)configtxgen configtx.yaml配置文件
  9. sql注入——day02
  10. buu Quoted-printable