特殊权限SUID,SGID, Sticky

前提:进程有属主和属组;文件有属主和属组;

(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权限的程序时,此用户将继承此程序的所属组权限

作用于目录上时:
此文件夹下所有用户新建文件都自动继承此目录的用户组.

    1. 作用在二进制程序上时,原理同SUID,只是由user位变为group位.
    2. 作用于目录上时演示:

实例

普通帐户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相关说明

  1. 对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除和改名自己的文件或目录;
  2. 只能作用在目录上.普通文件设置无意义,且会被linux内核忽略
  3. 用户在设置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权限已发挥作用.

你可能感兴趣的:(特殊权限SUID,SGID, Sticky)