特殊权限:SUID,SGID,STICKY
安全上下文:
1、进程以某用户的身份运行;进程是发起此进程用户的代理,因此以此用户的身份和权限完成此操作。
2、权限匹配模型:
(1)判断进程的属主,是否为被访问的文件属主;如果是,则应用属主的权限;否则检查访问控制列表的属主权限;再否则进入第2步;
(2)判断进程的属组,是否属于被访问的文件属组;如果是,则应用属组的权限;否则检查访问控制列表的属组权限;再否则进入第3步;
(3)使用Other权限。
1. SUID
默认情况下:用户发起的进程,进程的属主是属于发起者;因此,其以发起者的身份运行。
功用:用户运行某程序时,如果此程序拥有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而程序文件自己的属主。
管理文件的SUID权限:
1 | chmod u+|-s FILE… |
展示位置:属主的执行权限位;如果属主原本有执行权限,显示为小写s;否则显示为大写S。
示例:
1 | # ubuntu 用户查看/etc/shadow,提示无权限 |
2. SGID
功用:当目录属组有写权限,且有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组。
管理文件的SGID权限:
1 | chmod g+|-s FILE… |
展示位置:属组的执行权限位;如果属组原本有执行权限,显示为小写s;否则显示为大写S。
示例:
1 | # 创建用户centos,fedora;并附加组为mygrp |
3. STICKY
功用:对于属组或全局可写的目录,组内的所有用户或系统上的所有用户对此目录中都能创建新文件或删除所有的已有文件;如果为此目录设置STICKY权限,则每个用户能创建新文件,且只能删除自己的文件。
管理文件的SGID权限:
1 | chmod o+|-t FILE… |
展示位置:其他的执行权限位;如果其他原本有执行权限,显示为小写t;否则显示为大写T。
示例:
1 | ubuntu@YAITZA:/var/tmp$ mkdir test |
注意: 系统上的/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 |
基于八进制方式赋权时,可与默认的三位八进制数字左侧再加一位八进制数字。
例如:
1 | chmod 1777 FILE… |
4. facl:file access control lists
4.1 文件的额外赋权机制
在原有的u,g,o外,另一层让普通用户能控制赋权给另外的用户或组的赋权机制。
4.2 getfacl命令
1 | getfacl FILE… |
4.3 setfacl命令
1 | #赋权给用户 |