多用户多任务的操作系统的粗糙解释
这里的多任务指的是一台机器上边同时可以运行多个操作。即同时运行多个应用程序。
这里的多用户指的是在同一台机器的同一个操作系统上建立多个用户。
当同一台机器上有多个用户时,可以针对相同的文件对不同的用户设置不同的权限。
建立多个用户的目的是为了同一台机器上的文件或者目录的安全性考虑。或者说应用程序的安全性考虑。
用户类型
管理员:root
当管理员用户,在系统中做任何操作,都不受任何限制。
普通用户:
普通用户与管理员用户最直观的区别是有些文件普通用户是没有权限去查看的。
或者说使用普通用户登录操作系统时,有些命令都是没办法去使用的。
比如说普通用户是没有办法去修改文件的权限的。当普通用户去敲修改文件权限的命令时,系统就会报错。
普通用户中又分出系统用户,(系统用户的作用是保证机器上的某个软件的正常运行。)
如上图所示,MySQL用户,oralce用户,nobody用户是属于普通用户中的系统用户,系统用户存在的作用是保证某些应用程序的正常运行,不应该也不允许系统用户能够登录系统。
用户相关文件
根据一切皆文件的思想,所有用户的信息都保存在/etc/passwd这个文件中,并且当使用ls -l命令查看passwd中的信息时,一行文件内容代表一个用户信息。
如上图所示,使用useradd 命令去新建用户,这时用户的信息会保存在/etc/passwd文件中,并且会以追加的方式添加到文件的最后一行。
可以使用命令tail -n 1查看文件的最后一行信息。(这就是新建用户的信息。)
认识用户相关信息/etc/passwd
如果按照冒号分割用户信息,那么每一行都会被分成七部分。
在Linux操作系统中只有唯一的管理员就是root,并且root用户的id都是一样的都是0
第一部分:登录系统的用户名
第二部分:这个用户的密码占位符(给这个用户的密码占位置,在磁盘空间中占相应的位置。)(用户的密码并不在/etc/passwd中保存,而是在另一个文件中保存。)
第三部分:用户的唯一uid(跟个人的身份证号一样。独一无二)(当你从事计算机行业时,无论是从事的哪一方向,都应该从计算机的角度去思考问题,比如计算机是通过用户的id来分辨用户的。)
第四部分:叫做用户的基本组gid(用户组就相当于是一个微信群或者相当于是一个 QQ群,这样一个群里可以存放多个用户。)(用户组的作用:当一个操作系统存在多个用户时,并且需要对每个用户设置一样的权限时,不需要一个用户一个用户的设置权限,而是可以将这些用户拉到一个用户组中,给这个用户组设置一样的权限就可以了。)
当你在Linux操作系统中创建新用户时,这个新用户会被自动加到两个组中,其中一个组是基本组,另一个组是附加组。在Linux操作系统中跟用户同名的用户组既是用户的基本组又是用户的附加组。
而第四部分则是用户的基本组id,
当我们创建新用户时,产生的用户组默认既是用户的基本组又是用户的附加组,也就是说在操作系统中跟用户同名的用户组既是用户的基本组又是用户的附加组。
对于用户来说只能有一个基本组,但是可以有多个附加组。
第五部分:作为用户的描述信息,说明信息存在。(当创建者不给新建用户取说明信息的时候,第五部分就是空的。)
第六部分:对应的就是这个用户的家目录。
第七部分:系统给这个用户分配的shell程序名称,
shell程序是一类应用程序的总称,shell是人和Linux系统之间的翻译官。
在Linux操作系统中所有Linux命令的执行都是由Linux操作系统的内核去执行的,但是内核看不懂要执行的命令,所以就要有shell程序这样一个翻译官的存在。
shell程序是一类应用程序的总称,shell是将人敲的命令翻译给Linux内核去执行的。
如上图所示,/bin/bash这个shell应用程序能够保证用户能够正常登录系统。同时还可以正常敲命令。
/sbin/nologin这个shell应用程序能够保证用户不能正常登录系统。(常用于系统用户的创建。)
root:x:0:0:root:/root:/bin/bash
格式:
用户名:密码占位符:uid:gid:说明信息:宿主目录:shell
管理员的账号固定uid是0
1-999的uid是给系统用户留的,
1000+的uid是给普通用户留的uid
shell:
用于向内核翻译命令
/bin/bash
默认,可正常登录系统,执行命令
/sbin/nologin
不允许登录系统,适用于系统用户。
/etc/shadow文件,用来保存用户的密码。
第一段:$6表示操作系统使用的是数学上的一种sha512的算法对用户密码进行的保密。
$1表示的也是数学上的一种算法,
$6要比$1的算法,复杂的多。
第二段是salt (汉语翻译:盐)Linux操作系统生成的一段随机数
第三段是Linux操作系统加上随机数和用户密码一起加密之后的摸样。
用户密码在数学算法$sha512 生成的随机数 +密码本身
倒数三个数
倒数第三个数0表示用户密码的最短使用期限,
倒数第二个数99999表示密码的最长使用期限,
倒数第一个数7表示如果你的密码快过期了,临近密码过期的七天就会给用户警告,警告用户您的密码快过期了。