Linux之文件系统特殊权限

Linux之文件系统特殊权限

     linux系统中除了常见的读(r)、写(w)、执行(x)权限以外,还有3个特殊的权限,分别是setuid、setgid和stick bit

      进程的安全上下文,前提:

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

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

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

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

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

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

      (c) 则应用其它权限;

      简要描述suid、sgid,当用户开始登录系统时,将启动一个新的 shell 进程。这个新的 shell进程(通常是 bash)使用您的用户标识运行。bash 程序可以访问所有属于您的文件和

目录。作为用户,完全依靠其它程序来代表当前用户执行操作。因为当前启动的程序继承了的用户标识,因此当前用户不能访问任何不允许当前用户访问的文件系统对象。

      下面举例子说明一下:一般用户不能直接修改 passwd 文件,因为“write”标志已经对除“root 用户”以外的每个用户关闭:

      [root@localhost ~]# ls -l /etc/passwd

      -rw-r--r--. 1 root root 2528 9月   1 12:48 /etc/passwd

      这时候就有一个疑问了,那当前用户怎么修改自己的密码呢?Linux 权限模型有两个专门的位,叫做“suid”和“sgid”。当设置了一个可执行程序的“suid”这一位时,它将代表可执行文件的所有者运行,而不是代表启动程序的人运行。回到 /etc/passwd 问题上,查看 passwd 可执行文件:

      [root@localhost ~]# ls -l /usr/bin/passwd 

      -rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

      这里一个 s 取替了用户权限三元组中的一个 x。这表明,对于这个特殊程序,设置了 suid 和可执行位。正是这个原因,当 passwd 运行时,它将代表 root 用户执行(具有完全超级用户访问权),而不是代表运行它的用户运行。又因为 passwd 以 root 用户访问权运行,所以能够修改 /etc/passwd 文件,而没有什么问题。

      suid怎样工作,sgid 以同样的方式工作。它允许程序继承程序的组所有权,而不是当前用户的程序所有权。

     

      setuid(suid)、setgid(sgid)和stick bit(sticky)的设定

       suid:任何一个可执行程序文件能不能启动为进程:取决于发起者对程序文件是否有执行权限;启动为进程之后,其属主不是发起者,而程序文件自己的属主;这种机制即为SUID;

         设定:

    chmod u+s FILE... 

    chmod u-s FILE...

    注意:s: 属主原本拥有x权限;S: 属主原本无x权限;


guid:默认情况下,用户创建文件时,其属级为此用户所属的基本组;一旦某目录被设定了SGID权限,则对此目录拥有写权限的用户在此目录中创建的文件所属的组为目录的属组,而非用户的基本组;

         设定:

    chmod g+s FILE...

    chmod g-s FILE...


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

            设定:

     chmod o+t FILE...

     chmod o-t FILE...


       下面数字模式帮助理解一下:

       设置 sticky、suid 、 sgid 位:

            suid sgid sticky 模式数字

             on         on on 7

             on         on off 6

             on        off on 5

             on        off off 4

             off on on 3

             off on off 2

             off off on 1

             off off off 0

练习:

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

wKiom1XmkTuijPGqAAWaBLtJMOY377.jpg

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


wKiom1XmkhngLhVuAACEcBdXcOw835.jpg

wKioL1XmlDvjrvaVAAHu6dj3NQk310.jpg

wKioL1XmlGLjf2sUAABx12vAiGA656.jpg

wKioL1XmlJuDniW1AAG3M-Ga9jg947.jpg

注:如修改文件或目录属性权限等,其他终端普通用户仍在访问,要使修改的属性权限等生效,普通用户需要重新注销登录

wKioL1Xml3iDDBRQAAXf0nNvtDk415.jpg

你可能感兴趣的:(linux,上下文,SGID,SUID,Sticky,登录系统)