Linux系统上的特殊权限:SUID,SGID,Sticky
安全上下文:
前提:进程有属主属组,文件有属主属组
(1)任何一个可执行程序文件能不能启动为一个进程,取决于发起者对文件是否有执行权限
(2)启动为进程后,进程的属主为发起者,属组为发起者所属组
(3)进程访问文件时的权限,取决于进程的发起者
SUID
启动为一个进程后,属主不再是发起者,而是文件可执行程序文件的属主。
我可看到普通用户对此文件没有任何权限
使用普通用户查看此文件权限拒绝
cp cat 命令的可执行程序文件/bin/cat到 /mnt,然后给该文件加上s权限
权限设定:
chomd u+s file
chmod u-s file
SGID
默认情况下用户创建文件时,属组为此用户所属基本组,一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录下创建的文件所属组此目录的属组
权限设定:chmod g+s DIR
chmod g-s DIR
Sticky
对于一个多人可写的目录,如果设置了sticky,每个人仅能删除自己的文件
权限社的:
chmod o+t DIR
chmod o-t DIR
SUID SGID STICKY
000 - 111
0 - 7
000 (0):这三个权限都不加
001(1):有sticky权限
010(2):有SGID权限
011(3):SGID 和Sticky
100(4):有 SUID权限
101(5):有SUID和Sticky权限
......
chmod 1777 /tmp/a.txt 表示a.txt文件权限为777,并且sticky为1
这就是umask为什么有4位的原因
SUID:
s:属主拥有执行权限
S:属主没有执行权限
SGID:
s:属组有执行权限
S:属组没有执行权限
Syicky:
t:other有执行权限
T:other无执行权限