Linux系统上的特殊权限
在Linux系统中,我们常见的文件或目录的权限有三种, 分别为r(读),w(写),x(执行)。三种权限的相互组合,可以给目录或文件做出各种限制。事实上, 除了这3中常见的权限外,还有3个特殊权限, 为:SUID,SGID,STICKY
首先稍微介绍下Linux的进程和用户的安全上下文概念和Linux权限匹配的模型
安全上下文:
1、进程以某用户的身份运行;进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作;
2、权限匹配模型:
(1)判断进程的属主是否为被访问的文件属主,如果是则应用属主的权限;否则进入第2步;
(2)判断进程的属主是否属于被访问的文件属组,如果是则应用属组的权限,否则进入第3步;
(3)应用other的权限
SUID:默认情况下,用户发起的进程,进程的属主是其发起者,因此,其以发起者的身份在运行;
SUID的功用,用户运行某程序时,如果此程序拥有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件自己的属主。
管理文件的SUID权限:# chmod u+ / -s FILE….
展示位置,属主的执行权限位。如果属主原本有执行权限,则为小写的s,否则为大写S
SGID:
功用:当目录属组有写权限,且有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组。
管理文件的SGID权限:# chmod g+ / -s FILE….
展示于属组的执行权限位。如果属主原本有执行权限,则为小写的s,否则为大写S
Sticky:
功用:对于属组或全局可写的目录,组内的所有用户或系统上的所有用户对此目录中的都能创建新文件或删除所有的已有文件;如果为类目录设置Sticky权限,则每个用户都能创建文件,且只能删除自己的文件。
管理文件的Sticky权限:# chmod o+ / -t FILE….
展示位置,其他用户的执行权限位。如果属主原本有执行权限,则为小写的t,否则为大写T
Linux系统上的/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