linux系统上的特殊权限 :
特殊权限有:SUID,SGID,STICKY
安全上下文:
1、进程以其发起者的身份运行:进程对文件的访问权限,取决于发此进程的用户的权限;进程是发起些进程用户的代理,因此以此用户的身份和权限完成所有操作
2、权限匹配模型:
(1)判断进程的属主,是否为被访问的文件属主,如果是,则应用属主的权限;否则进入第2步
(2)判断进程的属主,是否为被访问的文件属组,如果是,则应用属组的权限;否则进入第3步
(3)应用other的权限
SUID:
默认情况下:用户发起的进程,进程的属主是其发起者;因此,其以发起者的身份在运行;命令本身的文件的属主,不一定跟进程的属主是一个。比如:ls文件的属主是root,当以hadoop登录shell运行ls进程时,进程是以hadoop为属主的,而不是root
SUID的功用:用户运行某程序时,如果此程序拥有SUID权限,那些程序运行为进程时,其进程的属主不是发起者,而是程序文件自己的属主
管理文件的SUID权限:
chmod u+|-s FILE ……
展示位置:属主的执行权限位
如果属主原本有执行权限,显示为小写s;否则,显示为大写S
SGID:
SGID的功用:当目录属组有写权限,且此目录有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件或目录的属组不是该用户的基本组,而是此目录的属组
管理文件的SGID权限:
chmod g+|-s FILE ……
展示位置:属组的执行权限位
如果属组原本有执行权限,显示为小写s;否则,显示为大写S
STICKY:
STICKY的功用:对于属组或全局可写的目录,组内的所有任务或系统上的所有用户对此目录中都能创建或删除所有的已有文件;如果为此类目录设置STICKY权限,则每个用户都能创建新文件,且只能删除自己的文件;不能删除属主非自己的文件
管理文件的STICKY权限:
chmod o+|-t FILE ……
展示位置:其它用户的执行权限位
如果属主原本有执行权限,显示为小写t;否则,显示为大写T
系统上的/tmp 和/var/tmp 目录默认均有STICKY权限
管理特殊权限的另一方式:
suid sgid sticky 八进制权限
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7
基于八进制方式赋权时,可于默认的三位八进制数字左侧再加一位八进制数字
例如:chmod 1777
facl:file access control lists
文件的额外赋权机制:
在原来的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的赋权机制
查看某文件的facl:
getfacl FILE ...
user:USERNAME:MODE
group:GROUP:MODE
赋权给用户:
setfacl -m u:USERNAME:MODE FILE...
赋权给组:
setfacl -m g:GROUPNAME:MODE FILE...
撤销赋权:
setfacl -x u:USERNAME FILE...
setfacl -x g:GROUPNAME FILE...
有了facl后的安全上下文:
权限匹配模型:
(1)判断进程的属主,是否为被访问的文件属主,如果是,则应用属主的权限;否则进入第2步
(2)判断进程的属主,是否有文件的额外权限的属主权限,如果是,则应用额外权限的属主的权限;否则进入第3步
(3)判断进程的属主,是否为被访问的文件属组,如果是,则应用属组的权限;否则进入第4步
(4)判断进程的属主,是否有文件的额外权限的属组权限,如果是,则应用额外权限的属组的权限;否则进入第5步
(5)应用other的权限