Linux文件系统上的特殊权限

权限模型:

u, g, o

r, w, x


进程的安全上下文:

前提:进程有属主(进程以哪个用户的身份运行);文件有属主和属组;

(1) 用户是否能够把某个可执行程序文件启动为进程,取决于用户对程序文件是否拥有执行权限;

(2) 程序启动为进程后,此进程的属主为当前用户,也即进程的发起者;进程所属的组,为发起者的基本组;

(3) 进程拥的访问权限,取决其属主的访问权限:

(a) 进程的属主,同文件属主,则应用文件属主权限;

(b) 进程的属主,属于文件的属组,则应用文件属组权限;

(c) 则应用其它权限;


SUID:

(1) 任何一个可执行程序文件能不能启动为进程:取决于发起者对程序文件是否有执行权限;

(2) 启动为进程之后,其属主不是发起者,而程序文件自己的属主;这种机制即为SUID;


权限设定:

chmod u+s FILE... 

chmod u-s FILE...


注意:

s: 属主原本拥有x权限;

S: 属主原本无x权限;


SGID:

默认情况下,用户创建文件时,其属级为此用户所属的基本组;

一旦某目录被设定了SGID权限,则对此目录拥有写权限的用户在此目录中创建的文件所属的组为目录的属组,而非用户的基本组;


权限设定:

chmod g+s FILE...

chmod g-s FILE...


Sticky:

对于一个多人可写的目录,此权限用于限制每个仅能删除自己的文件;


权限设定

chmod o+t FILE...

chmod o-t FILE...


SUID, SGID, STICKY

000

001

010

011

100

101

110

111


chmod 4777 FILE

chmod 3755 DIR


练习:

1、让普通用户能使用/tmp/cat去查看/etc/shadow文件;

2、创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组;此外,每个用户仅能删除自己的文件;