Linux特殊权限suid sgid和sbit比较好的讲解

Linux特殊权限介绍


Set UID
当s这个标志出现在文件所有者的x权限上时,如/usr/bin/passwd这个文件的权限状态:“-rwsr-xr-x.”,此时就被称为Set UID,简称为SUID。那么这个特殊权限的特殊性的作用是什么呢?

  1. SUID权限仅对二进制程序(binary program)有效;
  2. 执行者对于该程序需要具有x的可执行权限;
  3. 本权限仅在执行该程序的过程中有效(run-time);
  4. 执行者将具有该程序拥有者(owner)的权限。

      SUID的目的就是:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源。passwd就是一个很鲜明的例子,下面我们就来了解一下这相passwd执行的过程。

      我们知道,系统中的用户密码是保存在/etc/shadow中的,而这个文件的权限是----------. (这个权限和以前版本的RHEL也有差别,以前的是-r--------)。其实有没有r权限不重要,因为我们的root用户是拥有最高的权限,什么都能 干了。关键是要把密码写入到/etc/shadow中。我们知道,除了root用户能修改密码外,用户自己同样也能修改密码,为什么没有写入权限,还能修 改密码,就是因为这个SUID功能。
      
    下面就是passwd这个命令的执行过程
  5. 因为/usr/bin/passwd的权限对任何的用户都是可以执行的,所以系统中每个用户都可以执行此命令。
  6. 而/usr/bin/passwd这个文件的权限是属于root的。
  7. 当某个用户执行/usr/bin/passwd命令的时候,就拥有了root的权限了。
  8. 于是某个用户就可以借助root用户的权力,来修改了/etc/shadow文件了。
  9. 最后,把密码修改成功。
      
    注:这个SUID只能运行在二进制的程序上(系统中的一些命令),不能用在脚本上(script),因为脚本还是把很多的程序集合到一起来执行,而不是脚本自身在执行。同样,这个SUID也不能放到目录上,放上也是无效的。

    Set GID
    我们前面讲过,当s这个标志出现在文件所有者的x权限上时,则就被称为Set UID。那么把这个s放到文件的所属用户组x位置上的话,就是SGID。如开头的/usr/bin/wall命令。
    那么SGID的功能是什么呢?和SUID一样,只是SGID是获得该程序所属用户组的权限
    这相SGID有几点需要我们注意:
  10. SGID对二进制程序有用;
  11. 程序执行者对于该程序来说,需具备x的权限;
  12. SGID主要用在目录上;
      
    理解了SUID,我想SGID也很容易理解。如果用户在此目录下具有w权限的话,若使用者在此目录下建立新文件,则新文件的群组与此目录的群组相同。

    Sticky Bit
    这个就是针对others来设置的了,和上面两个一样,只是功能不同而已。
    SBIT(Sticky Bit)目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除
    最具有代表的就是/tmp目录,任何人都可以在/tmp内增加、修改文件(因为权限全是rwx),但仅有该文件/目录建立者与 root能够删除自己的目录或文件。
    注:这个SBIT对文件不起作用。
      

SUID/SGID/SBIT权限设置
和我们前面说的rwx差不多,也有两种方式,一种是以字符,一种是以数字。
4 为 SUID = u+s
2 为 SGID = g+s
1 为 SBIT = o+t

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章