Linux文件系统上的特殊权限
SUID, SGID, Sticky
安全上下文
前提:进程有属主和属组;文件有属主和属组;
(1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限;
(2) 启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组;
(3) 进程访问文件时的权限,取决于进程的发起者:
(a) 进程的发起者,同文件的属主:则应用文件属主权限;
(b) 进程的发起者,属于文件的属组;则应用文件属组权限;
(c) 不满足以上两种条件,应用文件“其它”权限;
1 SUID
(1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限;
(2) 启动为进程之后,其进程的属主为原程序文件的属主;
权限设定:
chmod u+s FILE...
chmod u-s FILE...
2 SGID
默认情况下,用户创建文件时,其属组为此用户所属的基本组;
一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组;
权限设定:
chmod g+s DIR...
chmod g-s DIR...
3 Sticky
对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除自己的文件;
权限设定:
chmod o+t DIR...
chmod o-t DIR...
SUID SGID STICKY
000 0 无特殊权限
001 1 stiky
010 2 SGID
011 3 STIKY+SGID
100 4 SUID
101 5 SUID+STIKY
110 6 SUID+SGID
111 7 SUID+SGID+STIKY
chmod 4777 /tmp/a.txt
几个权限位映射:
SUID: user, 占据属主的执行权限位;
s: 属主拥有x权限
S:属主没有x权限
SGID: group, 占据group的执行权限位;
s: group拥有x权限
S:group没有x权限
Sticky: other, 占据ohter的执行权限位;
t: other拥有x权限
T:other没有x权限
例子:查看文件a的权限:
SGID和stiky案例:
将test目录属组改为mygrp,并且给予属组写权限,将用户lee和user1加入到mygrp组
在test目录下分别以lee和user1的身份创建文件,发现文件属组都是用户原先的基本组
赋予SGID权限给test目录
继续用lee和user1创建文件,发现文件属组变成了mygrp
但是这个目录下的文件缺乏安全性,lee用户可以删除user1的文件,反之亦然,所以就有了stiky
现在lee用户就不可以删除user1的文件了
本文出自 “明天过后” 博客,请务必保留此出处http://leeyan.blog.51cto.com/8379003/1691312
原文地址:http://leeyan.blog.51cto.com/8379003/1691312