linux 文件特殊权限位小结

SUID、SGID、STICKY简介:

在了解特殊权限位前,先来了解一下安全上下文概念。

安全上下文:
进程运行时可以访问哪些资源或文件,不取决于进程文件的属主属组,而是取决于运行该命令的用户身份的uid/gid,以该身份获取各类系统资源。

特殊位做用:
  SUID:对一个可执行文件,不是以发起者身份来获取资源,而是以可执行文件的属主身份来执行。
  SGID对一个可执行文件,不是以发起者身份来获取资源,而是以可执行文件的属组身份来执行。
  STICKY:粘滞位,一般对目录而言。一般对于全局可写目录(other也可写)来讲,让该目录具备sticky后,删除只对属于本身的文件有效(可是仍能编辑修改别人的文件,除了root的)。不能根据安全上下文获取对别人的文件的写权限。

设置方式:
 #chmod u+s
 #chmod g+s
同上,去除特殊位有: #chmou u-s  .等

  SUID:置于 u 的 x 位,原位置有执行权限,就置为 s,没有了为 S .
  SGID:置于 g 的 x 位,原位置有执行权限,就置为 s,没有了为 S .
  STICKY:粘滞位,置于 o 的 x 位,原位置有执行权限,就置为 t ,不然为T .

表示方法:
  将三个特殊位的用八进制数值表示,放于 u/g/o 位以前。其中 suid :4 sgid:2  sticky:1

  例: 对某个目录:
   #chmod  4551  file  // 权限: r-sr-x--x
   #chmod  2551  file  // 权限: r-xr-s--x
   #chmod  1551  file  // 权限: r-xr-x--t

   因为SUID和SGID是在执行程序(程序的可执行位被设置)时起做用,而可执行位只对普通文件和目录文件有意义,因此设置其余种类文件的SUID和SGID位是没有多大意义的。

   对一个属主为root的可执行文件,若是设置了SUID位,则其余全部普通用户都将能够以root身份运行该文件,获取相应的系统资源。固然这在某些场合时须要的,可是滥用会形成系统的安全隐患。

  对一个全局可写目录,若其从属于mygrp组,一个属于mygrp组的用户创建文件后属组为本身的私有组,可是加上给该文件夹加上SGID位后,可让用户建立的文件从属于该目录所属的组,由于是以文件夹属组的身份来建立的。

  对于一个全局可写目录,加上sticky位之后,普通用户将只能删除本身的文件,而不能删除其余用户的文件。安全

  
  
  
  
  1. [root@localhost tmp]# su - user1  
  2. [user1@localhost ~]$ id  
  3. uid=512(user1) gid=512(user1) groups=504(mygrp),512(user1)context=root:system_r:unconfined_t:SystemLow-SystemHigh  
  4. [user1@localhost ~]$ cd /tmp/share/  
  5. -bash: cd: /tmp/share/: Permission denied  
  6. [user1@localhost ~]$ ll -d /tmp/share  
  7. drwxrwSr-t 5 root mygrp 4096 Dec 30 16:09 /tmp/share  
  8. [user1@localhost ~]$   
  9. # 如上例,若是没有原位没有置X权限,即便同组的用户也没法进入目录,
  10. # 再设置SGID位也不起做用 
相关文章
相关标签/搜索