前提:进程有属主和属组;文件有属主和属组;
(1) 任何一个可执行程序文件能不能启动为进程:取决于发起者对程序文件是否拥有执行权限;
(2) 启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组;
(3) 进程访问文件时的权限,取决于进程的发起者:
(a) 进程的发起者,同文件的属主:则应用文件属主权限;
(b) 进程的发起者,属于文件的属组;则应用文件属组权限;
(c) 应用文件“其它”权限;
suid
给二进制文件加上suid的限制
1.启动为进程之后,其进程的属主为原程序文件的属主;
2.只能作用在二进制程序上,不能作用在脚本上,且设置在目录上无意义 ;
3.执行suid权限的程序时,此用户将继承此程序的所有者权限;
实例
linux中有一个二进制程序cat,属主属组均为root
linux中有一个系统文件/etc/shadow,属主属组均为root
我们创建一个普通用户叫user1
user1具有对cat的执行权限
user1 不具有对/etc/shadow的任何权限
默认情况下
user1执行cat,系统创建一个cat进程,进程的属主属组取程序发起者,也就是user1:user1
cat进程访问/etc/shadow,由于进程属主属组是user1:user1,与/etc/shadow的属组属主都不匹配,所以被拒绝访问.
给cat设置SUID之后
user1执行cat.系统创建一个cat进程,进程的属主取cat的属主,属组取程序发起者,就是root:user1
cat进程访问/etc/shadow,由于进程属主是root,与/etc/shadow的属主匹配,所以被允许
SGID
SGID相关说明
作用在二进制程序上时:
执行sgid权限的程序时,此用户将继承此程序的所属组权限
作用于目录上时:
此文件夹下所有用户新建文件都自动继承此目录的用户组.
-
- 作用在二进制程序上时,原理同SUID,只是由user位变为group位.
- 作用于目录上时演示:
实例
普通帐户quintin在/tmp中创建一个目录叫quintindir,添加SGID.权限777
$ chmod 2777 quintindir/
$ ll -d quintindir/
drwxrwsrwx. 2 quintin quintin 6 Nov 18 14:42 quintindir/
切换到普通用户user1,在quintindir目录中创建一个文件和一个目录
$ touch user1file
$ mkdir user1dir
$ ll
-rw-rw-r--. 1 user1 quintin 0 Nov 18 14:47 user1file
drwxrwsr-x. 2 user1 quintin 6 Nov 18 14:47 user1dir
结果显示,user1在quintindir目录下创建的文件和目录都自动继承了quintindir的属组
而且新目录的权限也继承了SGID.
所以设定了SGID的目录中的所有新建文件和目录都会自动属于quintin组.
STICKY
显示
文件other位的x权限,用t代替.表示被设置了Sticky
如果other位没有x权限,会显示为大写T,表示有故障(权限无效)
Sticky相关说明
- 对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除和改名自己的文件或目录;
- 只能作用在目录上.普通文件设置无意义,且会被linux内核忽略
- 用户在设置Sticky权限的目录下新建的目录不会自动继承Sticky权限
实例
切换到quintin用户,进入/app/tmp目录
尝试删除或改名用户wang的文件或目录
改名文件
[quintin@centos7 /app/tmp]$ mv wangf1 aaa
mv: cannot move ‘wangf1’ to ‘aaa’: Operation not permitted
改名目录
[quintin@centos7 /app/tmp]$ mv wangd1 bbb
mv: cannot move ‘wangd1’ to ‘bbb’: Operation not permitted
移动文件
[quintin@centos7 /app/tmp]$ mv wangf1 qdir1/
mv: cannot move ‘wangf1’ to ‘qdir1/wangf1’: Operation not permitted
删除文件
[quintin@centos7 /app/tmp]$ rm -f wangf1
rm: cannot remove ‘wangf1’: Operation not permitted
删除目录
[quintin@centos7 /app/tmp]$ rm -f wangf1
rm: cannot remove ‘wangf1’: Operation not permitted
以上所有操作均提示Operation not permitted,表明Sticky权限已发挥作用.