Linux文件系统上的特殊权限
Linux文件系统上的特殊权限
- SUID, SGID, Sticky
- 三种常用权限:r, w, x user, group, other
- 安全上下文
前提:进程有属主和属组;文件有属主和属组
(1) 任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有 执行权限
(2) 启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
(c) 应用文件“其它”权限
可执行文件上SUID权限
- 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有 执行权限
- 启动为进程之后,其进程的属主为原程序文件的属主
- SUID只对二进制可执行程序有效
- SUID设置在目录上无意义
- 权限设定:
chmod u+s FILE...
chmod u-s FILE...
可执行文件上SGID权限
- 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有 8 执行权限
- 启动为进程之后,其进程的属组为原程序文件的属组
- 权限设定:
chmod g+s FILE...
chmod g-s FILE...
目录上的SGID权限
- 默认情况下,用户创建文件时,其属组为此用户所属的主组
- 一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件 所属的组为此目录的属组
- 通常用于创建一个协作目录
- 权限设定:
chmod g+s DIR...
chmod g-s DIR...
Sticky 位
- 具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限 或拥有权
- 在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
- sticky 设置在文件上无意义 *权限设定:
chmod o+t DIR...
chmod o-t DIR... - 例如:
ls -ld /tmp drwxrwxrwt 12 root root 4096 Nov 2 15:44 /tmp
特殊权限数字法
SUID SGID STICKY
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
- chmod 4777 /tmp/a.txt
权限位映射
- SUID: user,占据属主的执行权限位
s:属主拥有x权限
S:属主没有x权限 - SGID: group,占据属组的执行权限位
s: group拥有x权限
S:group没有x权限 - Sticky: other,占据other的执行权限位
t:other拥有x权限
T:other没有x权限
设定文件特定属性
- Linux文件系统上的特殊权限chattr +i 不能删除,改名,更改
- chattr +a 只能追加内容
- lsattr 显示特定属性