用户与用户组管理-用户配置文件-用户信息文件

1、用户管理简介

  • 先介绍配置文件,在介绍命令。跟学一个Windows课程是不一样的,学windows直接学操作就好了。其实在我们学习Windows时,设置了管理员的密码,可能连密码放在哪都不知道,大家对系统管理的基本知识都没有认识,那么在Linux学习,因为是服务端系统,对整个系统又深入的了解。
  • 在Linux系统里面,很多时候做一些更改,必须要写入它的配置文件,才能永久生效,用命令的话一重启的话就不存在了。
  • 所以越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。
  • 在Linux中主要是通过用户配置文件来查看和修改用户信息

2、/etc/passwd

  • 每个用户的基本信息都保存在/etc/passwd中
    vim /etc/passwd进去看看里面的内容
    用户与用户组管理-用户配置文件-用户信息文件
  • 第一次见到这种文件的时候可以先用man 5 passwd来进行查看帮助。这个 5代表配置文件, 后面加上你要查的配置文件的名称,就可以查看它的帮助。输文件名,不是绝对路径(/etc/passwd), 因为它的文件里已经记录了它的路径,如果再打它的路径,反而会显示文件的内容,看这些信息有个基本的了解。
    用户与用户组管理-用户配置文件-用户信息文件

结论: 这里的每一行代表一个用户,每行总共7个字段,如果想知道这个Linux里有多少用户,看一下这个文件的行数就可以了。这7个字段所代表的含义:

  • 第1字段:用户名称
  • 第2字段:密码标志
  • 第3字段:UID(用户ID)
          0:                超级用户
          1-499            系统用户(伪用户)
          500-65535      普通用户
  • 第四字段:GID(用户初始组ID)
  • 第五字段:用户说明
  • 第六字段:家目录
           普通用户: /home/用户名/
           超级用户: /root/
  • 第七字段:登录之后的Shell

3、7个字段代表的含义

每个字段的含义已经说完了,接下来开始详细介绍每个字段代表的含义和注意事项:
第1个字段:

  • 用户名不要用一些特殊的字符,windows也是一样,用户名要规范,别弄得太长,用户过多管理起来不太方便,如果是没有含义得更不能接受的,比如aa、bb

第2个字段:

  • 这个X标志代表这个用户有密码的,这个密码是啥那,请查shadow文件。 这个x是不能省略的,如果不写x,这个系统登录的时候不会到shadow里去搜索真正的密码串,他会认为这个用户没有密码,直接登录。如果没有密码的登录只允许本机登录,不允许远程登录。
  • 早期的Linux当中是把密码直接放到这个文件当中,但是现在并没有把密码放在这里,而是放在另一个文件,而实放在影子文件/etc/shadow里面,最主要原因是ll /etc/passwd可查这个文件得权限是644 ll /etc/shadow这个文件的权限是000。以前是把密码放在passwd里面,但是有一个问题,他存放了用户信息,每个用户能看自己的信息,还有读的权限,都能看到内容,造成不安全,所以现在已经写到shadow里面了。 来看一下shadow文件:
    用户与用户组管理-用户配置文件-用户信息文件
  • 通过上图可知里面显示的都是加密过的密码(由第一行的第二个字段),是密文显示的。影子文件的权限是000,所以只有root才能访问。

第3个字段:

  • UID(用户ID)相当于人的身份证号,理论上能唯一表示一个用户。为什么要有这个UID那? 因为内核有许多操作对象,比如说用户,用户组,包括进程,文件都有一个名称,但是内核在对他们进行操作得时候,你可以理解内核不知道ABCD只知道1234,所以这些操作得对象都有一个数字得标识。李明叫这个名字得很多,可以用身份证进行标识。数字标识。内核通过数字标识来调用这个对象,用户就是UID。
  • 这个系统或者内核对ID号敏感。但是普通用户只记ID号,还是很难接受得,所以有个用户名,给普通用户的,就不如不愿意记ip地址,记域名一个道理。理论上来讲每个id号都是唯一的。
  • 伪用户: 系统默认会有很多这样的用户,这些用户不能删,一旦删除系统直接崩溃。因为一些服务会调用这些伪用户,专门给系统用来启动服务,或者启动命令,一旦把这些用户删掉,相对应的命令和服务就不能使用了。 这些用户都是我们的Linux系统服务,这些用户不能登录,其次不能删除,最好不要去操作。
  • 注意: 1. 不能说root一定是管理员,可以说UID=0的是管理员。 系统检测的知识它的ID号,名称知识给我们用户看的。如果把一个普通用户的UID改成0,会把这个用户当成管理员来对待,因为它的UID也是0.理论上用户的UID不能重叠,如果强制的把一个用户的UID改成另一个用户的,操作系统会把这两个用户当成一个用户来对待。2. 在Linux当中如果我们想把一个普通用户改成超级用户,一般的做法就是把UID改成0; 跟Windows不太一样,就是把普通用户加入管理员组里,成为管理员。passwd文件在操作的时候记得备份一下。

第4字段:

  • 要理解这个字段,咱们需要知道什么是初始组?什么是附加组概念来了!!!
    初始组: 就是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。
    附加组: 指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。
  • 组相当于社团,兴趣相同的。相同类型的集合就成为一个组。初始组:这个用户一建立,它默认就会属于一个组。
  • 跟Windows不一样,Windows中每添加一个用户,都会属于叫users的组类,不会新建一个跟用户名相同的组。Linux不是这样,如果添加一个user1,默认生成一个user1组,作为这个user1用户的初始用户组。可以这样理解,这个用户一出现就拥有了组。
  • 特点: 1. 这个用户离开这个组不能活。每一个用户必须有一个初始组2. 每个用户只能有一个初始组,初始组你不能选,但你可以改,改了之后这个初始用户组就要放弃。虽然能改,不推荐去改这个初始用户组。 原因很简单: 今天我是user1用户,然后初始组也是user1组,我创建的文件,默认所有者所属组都是user1用户,user1组,如果强制的把user1组改为user2组,我创建一个文件,它的所有者是user1,所属组变成user2组了,容易把自己把自己搞晕。
  • 附加组:组是多个用户的集合,一个用户可以最少属于一个初始组,同时也可以属于多个组。 就比如可以加入多个社团。但主组只能有一个。
    举个不恰当的栗子: 一个男的现在结婚了,有一个老婆,这个老婆就相当于者初始组。这个男的比较花心,在外面有别的女朋友,有小三小四小五,可以叫做附加组。但是这个初始组是可以换的,有一天这个男的道德沦丧,跟他老婆离婚了,这个时候可以娶个小三或者小四,只能娶一个,作为初始组。这个时候初始组是可以变换的。
  • 在/etc/passwd里面看到的组ID是初始组ID。如果想知道,用户属于哪些附加组,下回分解。这个初始组ID到底属于哪一个组那,就需要匹配/etc/group这个文件,才能看到他是哪个组。

第5字段:

  • 用户说明: 我们可以理解为对这个用户的一个备注一个说明信息。可以加可以不加说明,如果这个用起个名叫做王俊凯,然后可以给他备注,“这是个假的王俊凯。”

第6字段:

  • 家目录 ,就是用户的家。什么是用户的家那?该如何理解那?
  • Windows用户登录,总有一个默认的图形界面。但是我们Linux的服务器端,有可能个人机会装图形界面,但是服务器端,我们装完之后就是纯粹的空白的字符界面,那总得有一个初始得登录位置吧,这个初始登录位置就成为这个目录的家。 这个家是固定得,记下来或者知道就可以了。 普通用户的家目录是/home/用户名/如果添加一个user1用户,会默认得再/home/下建立user1目录,作为user1用户的家目录。user1这个用户对这个目录拥有所有得权限。超级用户:/root/ 小心:超级用户处处跟别的用户不同,普通用户是一个二级目录,超级用户是根下得一级用户。这个是系统规定好的。

第七字段:

  • 登录之后的Shell 什么是Shell那???
    Shell就是Linux的命令解释器。
    在/etc/passwd当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin
  • 如果敲个命令,这中间要通过命令解释器,解释传输给内核,内核再做出应答,显示在命令显示窗口这样得一个过程。就是shell作为这个命令的解释。标准的shell是/bin/bash
  • 就算在Windows里也有这个,在Windows点击开始,会弹出开始菜单,其实Windows自己有一个命令解释器,会检测在这个图像的范围之内,单机了鼠标左键,就会执行弹出菜单的这样的一个程序,只是图形的命令解释器。
  • 用户要想和操作系统直接进行交互,都需要有这个shell,或者说有这个命令解释器的存在。 在Linux里,这个shell可以有多个的,只不过默认的是这一个。理论上是可以更改的。这个shell不小心改错了就悲剧了。可以用普通用户做一个实验,随便添加一个用户以后,故意让这个shell改错,故意写成/bin/bas 然后就无法登录这个系统的。
  • 所有的普通用户或root,能够登录的shell都是/bin/bash标准shell。 所有的伪用户写的shell是/sbin/nologin,nologin是不能登录的。如果把普通用户的shell改成/sbin/nologin,这个用户会暂时停掉,用在恢复。