这一节咱们介绍Linux的用户以及权限管理的前半段,包括:一、权限管理介绍; 二、用户管理; 三、常见命令linux
权限管理:shell
为了访问计算机资源,咱们须要对其进行受权才能访问,根据什么东西来进行受权呢?这样就有了用户的概念;通常状况下咱们都是基于用户来进行计算机资源的受权,而为了更好的管理这些用户,具备同一属性的用户咱们归为同一组,这就是用户组;对于一个文件而言,它有本身的属主(也就是某一个用户),也有它本身的属组(也就是该用户所在的用户组),也有即不是他的属主也不是属组的其余用户的权限,这段权限咱们统称为其余用户;安全
属主、属组和其余用户就是咱们Linux系统下文件的三个权限段;bash
而用户与用户组的概念则是为了方便人类识别而取名的,对于计算机而言,则是查看用户与用户组对应的UID以及GID来识别用户与用户组;spa
安全上下文关系(secure context):blog
进程启动是依托于用户的!!!每一个进程启动是要借助于这个用户,而这个用户启动的这个进程的权限也来源于这个用户的权限!!!;进程
而对应进程调用的文件而言,文件又有它本身自己的权限,这个权限;md5
整个任务是否能完成,就取决于两点:(对上)启动该进程用户的权限,(对下)程序调用的文件的权限。而这两点就是咱们所说的安全上下文关系(secure context);ci
权限:资源
到底什么是权限呢?常见的权限有rwx,读写执行(还有一些特殊权限位在以后介绍);
rwx对于文件而言:可读,表明可使用相似于cat等命令查看文件内容;可写,表明能够经过vi或者echo编辑以及rm删除此文件;可执行,exacutable,表示能够将该文件当作命令提交给kernel执行;
rwx对于目录而言:可读,表明能够对此目录执行ls来列出内部的全部文件;可写,表明能够在此目录下建立子目录;可执行,表示可使用cd来切换进此目录,也可使用ls -l查看文件内部子目录以及子文件的详细信息;
文件权限分为三段:在介绍ls命令的时候咱们提到过,如上图:查看a这个目录的权限--rwx表明属主,中间r-x表明属组,最后r-x表明其余用户;
其中,这些权限位能够经过8进制表示显示显示出来:
000 | 0 | --- | 无权限 |
001 | 1 | --x | 仅能执行 |
010 | 2 | -w- | 仅能写 |
011 | 3 | -wx | 可写可执行 |
100 | 4 | r-- | 仅能读 |
101 | 5 | r-x | 读执行权限 |
110 | 6 | rw- | 读写权限 |
111 | 7 | rwx | 读写执行权限 |
上图中a的权限则为:对于属主有读写执行权限,对于属组有读和执行权限,对于其余用户也是读和执行权限;
用户分为两类:管理员与普通用户,管理员则是root用户,而普通用户又分为系统用户和通常用户,root这里咱们不用过多介绍,只须要知道root的UID为0不能修改,它具备最大的权限便可,咱们重点介绍普通用户;
一、系统用户:系统用户的UID通常为1-499(linux6到了7版本为1-999),这些用户时系统后台进程运行的时候所须要的用户,这类用户不用来登陆系统,因此咱们看到的shell程序定义为了/bin/nologin;
二、通常用户:这类用户的UID通常为500-60000,这类用户就是用来作系统管理,作计算机资源的分配;
用户通常属于用户组!而每个用户都会属于一个组或者多个组,而这些组对于用户而言,则分为基本组和额外组(额外组也叫作附加组),通常建立用户的时候,若是没有指定组,则会自动为这个用户建立一个同名的组,咱们叫这个组为私有组;
/etc/passwd、/etc/group、/etc/shadow、/etc/gshadow
/etc/passwd:用来存放用户的相关信息;:为分割符(cut -d指定分割符)
第一列:用户名
第二列:密码,而这里用x代替,这里叫作填充符,真正的密码存放于/etc/shadow文件中
第三列:UID,用户ID号(0为root用户,1-499为系统用户,500-60000为通常用户)
第四列:GID,组ID号
第五列:描述,若是一个用户又多个描述内容,用 “,”隔开
第六列:用户的家目录
第七列:用户使用的shell程序,通常为/bin/bash,若是是/sbin/nologin,则这个用户时不能登陆的
/etc/shadow:“影子文件”,用来存放密码相关内容,重点为密码自己以及密码的过时时间的定义,它一样是以“:”做为分割符;同时,经过man shadow文件能够查看相关文档说明;
第一列:用户名
第二列:密码,密码列又以$符号作为分割,分为几个内容(以hive用户为例)
这里的6表明md5的hash方式
/toyUKZI 则为随机产生的“盐”,用来使相同的密码在作hash后能获得不一样的128位字符;
最后一段乱码为“密码+盐”进行md5 hash后的结果存放在这里;
md5sum 文件名 #生成一段MD5的hash码
(从第三列开始则是对密码一系列的时间定义)
第三列:(date of last password change)从系统元年(1970-01-01)到最近一次修改密码的时间;
第四列:(minimum password age)密码的最短使用期限,让你的密码先用两天才能去改;
第五列:(maximum password age)密码使用的最长期限,这个密码用了多少天之后必须修改;
第六列:(password warning period)密码过时警告时间,还有多少天密码就要过时了,警告用户须要修改密码了;
第七列:(password inactivity period)在密码过时之后,还宽限几天,而这几天以登陆就必须修改密码,没法作其余的操做;
第八列:(account expiration date)从1970-01-01开始算起,到达目标时间之后就直接过时,不能再使用;
其中99999表示永不过时;
【reserved field,在文件的最后还有一列保留位】
/etc/group:组文件,里面存放了Linux系统下组信息;包括组名、组密码(占位符)、GID、和存放在这个组中的用户(若是对于用户而言,这个组时它的私有组,则不会显示在这里,只有是附加组的时候才会显示);
/etc/gshadow:组密码文件,在用户须要临时组权限的时候,这时,咱们就须要切换组(newgrp 组名),这时就须要为组设置密码;
用户管理:useradd、userdel、usermod、passwd、chsh、chfn、finger、id、chage
组管理:groupadd、groupdel、groupmod、gpasswd
权限管理:chown、chgrp、chmod、umask