进程的安全上下文

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

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

(3)、进程拥有的访问权限,取决于属主的访问权限

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

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

(c) 否则应用其他权限


SUID

展示于文件属主的执行权限位,s表示属主原本拥有x权限,S表示属主原本无x权限

功用:对于一个可执行文件来讲,任何用户运行此程序为进程之后,其属主不再是进程的发起者,而是程序文件自己的属主,这种机制即为SUID


权限设定:

chmod u+s FILE...

chmod u-s FILE...


例如:用户需要修改密码,输入passwd命令之后,则运行/usr/bin/passwd文件,该文件的属主、属组都是root,其他用户只有执行权限。

linux的特殊权限(转载)_sgid


而运行该命令修改密码后它会更新/etc/passwd和/etc/shadow文件,而这两个文件只有root用户才具修改限限。

linux的特殊权限(转载)_suid_02


所以,/usr/bin/passwd文件的SUID权限会让该程序运行后就具有root的权限,那么以root的身份就能修改,

/etc/passwd、/etc/shadow这两个文件了。



SGID

展示于文件属组的执行权限位

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

一旦某目录被设定了SGID权限,则对此目录拥有写权限的用户在此目录中创建文件,这些所属的组均为该目录的属组。


权限设定:

chmod g+s FILE...

chmod g-s FILE...


例如:有一群人需要在某个目录协同工作时,可为目录设置SGID权限。这样在该目录中创建的文件属组都是该目录的属组,再把该组添加为用户的附加组,对组分配相应的权限。在该目录下大家就可协同工作了。


在一个公共的目录,给目录的属组分配rwx权限,这样只要隶属于该组的用户都可以在该目录内创建文件,而创建的文件或目录大家都有权打开和修改。为了防止用户误操作,限制用户只能删除自己创建的文件,这就是特殊权限Sticky的作用。



Sticky

展示于其他用户的执行权限位,小写字母t

对一个公共目录,此权限用于限制每个用户只能删除自己创建的文件


权限设定:

chmod o+t FILE...

chmod o-t FILE...


特殊权限的二进制数表示方式

SUIDSGIDSTICKY

000

0

001

1

STICKY

010

2

SGID

011

3

SGID+STICKY

100

4

SUID

101

5

SUID+STICKY

110

6

SUID+SGID

111

7

SUID+SGID+STICKY

 

 

特殊权限也可以跟文件正常的权限一起设置:

chmod 4777 FILE

chmod 2755 DIR

chmod 3755 DIR

 

 

实例:

///home下创建个pub目录,为该目录同时设置SUIDSticky权限

linux的特殊权限(转载)_suid_03