计算机资源:定义了资源的访问能力,就是权限
权限
用户,容器,关联权限:用户组,方便地指派权限
只要这个用户放在这个容器里面,他就有相关的权限,这个容器也就是用户组的概念。
所以在Linux下定义了三组用户的权限
属主:属组:其他用户
组是个逻辑概念,他只是指派权限,是不能登录的,但是组有密码
进程也是有属组和属主的,谁发起了这个进程,就以怎么样的权限执行,而执行目标刚好有同样的属主和属组,那就可以被运行
我们默认让文件不应该执行权限,但是默认目录要有执行权限,如下所示:
[[email protected] tmp]$ cd mulu/ (进都进不去,说明这个mulu目录在允许mage这个用户进入的组里面肯定是没有x执行权限的)
-bash: cd: mulu/: Permission denied
安全上下文(security contesxt):-Z
ls -lZ
[[email protected] ~]# ls -lZ anaconda-ks.cfg
-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
rwx 对应的8进制是 421 所以rwxrw-r-x就是765
后面再给权限的时候用到chmod
用户:UID
组:GID所以每一个用户都是有一个UID的,这个是内部的数据库一一对应
解析:名称解析:www.sohu.com-->ip
我们怎么知道用户名对应的id号,其实就是根据数据库,而Linux登录账号的用户密码的数据库就是我们熟知的/etc/passwd,/etc/shadow,/etc/group
所以这里面利用的就是/etc/passwd/的数据来登录的
而组呢就是利用了/etc/group下的数据来进行解析的
便于用户管理,不可能把密码放在passwd,其实他是放在了shadow的,也就是影子文件
影子口令:/etc/shadow
组:/etc/gshadow组也是有密码的,虽然它是不需要登录的
用户类别:(从ID号去理解各个不同的用户)
管理员:UID:0 root
普通用户:1-65535 2的16次方
系统用户:1-499
一般用户:500-65536 但是在Redhat7.0上是从1000开始
[[email protected] tmp]$ id mage
uid=1000(mage) gid=1000(mage) groups=1000(mage),10(wheel)
[[email protected] tmp]$ id togogo01
uid=1001(togogo01) gid=1001(togogo) groups=1001(togogo)
系统用户:任何进程都以某个用户执行
如果一个进程以管理员的身份去运行,那如果有人攻击获得了这个进程的执行权限,那就有了这个进程的所有权限
提问:系统用户的作用?
因此系统用户的作用就是因为在很多后台需要运行的,但是不需要和用户关联的进程,他也应该是以一个普通身份的方式运行,所以这一类用户专门用来运行后台进程的用户我们叫做系统用户,当然我们后面用的非常多,比如web服务器,nginx都要用到这一类用户:所以这一类用户是限制其不允许登录的。
只是用于某一类进程,不需要用户交互的,所以不需要登录,从安全上去考虑
用户组:
管理员组:
普通组:1.系统组(1-499) 2.一般组(500-65536)
用户组类别:
私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组
用户的私有组不一定是基本组
基本组:
额外组:默认组以外的其他组
进程也有属组和属主
实例
假如一个进程以:tom tom运行(比如我们的ls这个程序,执行ls a.txt,那么因为ls的属组和属主都是root,所以它是以其他用户的权限去执行ls这个进程,固然,这个进程的属组和属主都是tom)
访问这个对象: rwxrw-r-- jerry tom a.txt
请问:进程访问a.txt的时候是以哪一个权限来访问
这道题的答案,是以属组的权限来执行的
[[email protected] tmp]$ ll -d /bin/ls
-rwxr-xr-x 1 root root 109208 Nov 10 17:43 /bin/ls
/bin/ls是一个可执行文件。执行ls就是会用这个文件形成一个ls进程
www是以其他用户组的权限来执行这个ls的
而当www执行了之后,这个ls进程的属主就是www,而不是root,当形成了进程之后,就和这个文件/bin/ls无关,只和发起者的有关
这里涉及到了安全上下文的知识,要深入理解,如下面的一个实例
[[email protected] ~]# ps aux | grep ps
root 8568 0.0 0.0 103236 876 pts/1 S+ 11:36 0:00 grep ps
[[email protected] ~]# su haha
[[email protected] root]$ ps aux | grep ps
haha 8584 0.0 0.0 103236 880 pts/1 S+ 11:36 0:00 grep ps
所以进程的的属主就是发起者这个用户,而和这个程序本身的无关了
原文地址:http://blog.51cto.com/425319153/2092980