1.Set UID: 是为了让一般使用者在执行某些程式的时候, 能够暂时的具有该程式拥有者的权限。一个应用场景就是:一些脚本,设置了它们的uid,这样指定的一些用户只要执行这些脚本就能够完成相应的工作,而无须以数据库管理员的身份登录,以免不小心破坏了数据库服务器。通过执行这些脚本,他们可以完成数据库备份及其他管理任务,但是在这些脚本运行结束之后,他们就又回复到他们作为普通用户的权限。
2.Set GID:
  • 档案:如果 SGID 是设定在 binary file 上面,则不论使用者是谁,在执行该程式的时候, 他的有效群组 (effective group) 将会变成该程式的群组所有人 (group id)。

  • 目录:如果 SGID 是设定在 A 目录上面,则在该 A 目录内所建立的档案或目录的 group ,将会是 此 A 目录的 group .

3.Sticky Bit: 目前只针对目录有效,对于档案已经没有效果了。 SBit 对于目录的作用是:‘在具有 SBit 的目录下,使用者若在该目录下具有 w 及 x 的权限, 则当使用者在该目录下建立档案或目录时,只有档案拥有者与 root 才有权力删除’。换句话说:当甲这个使用者于 A 目录下是拥有 group 或者是 other 的项目,并且拥有 w 的权限, 这表示‘甲使用者对该目录内任何人建立的目录或档案均可进行 "删除/更名/搬移" 等动作。’ 不过,如果将 A 目录加上了 Sticky bit 的权限项目时, 则甲只能够针对自己建立的档案或目录进行删除/更名/移动等动作

4.SUID/SGID/SBIT 权限设定: 如何开启档案使成为具有 SUID 与 SGID 的权限呢?! 这就需要刚刚的数字更改权限的方法了!现在你应该已经知道数字型态个更改权限方式为‘三个数字’的组合, 那么如果在这三个数字之前再加上一个数字的话,那最前的面数字就代表这几个属性了! ( 注:通常我们使用 chmod xyz filename 的方式来设定 filename 的属性时,则是假设没有 SUID, SGID 及 Sticky bit 啦! )

  • 4 为 SUID
  • 2 为 SGID
  • 1 为 Sticky bit

        [root@linux ~]# cd /tmp
        [root@linux tmp]# touch test
        [root@linux tmp]# chmod 4755 test; ls -l test
        -rwsr-xr-x  1 root root 0 Jul 20 11:27 test
        [root@linux tmp]# chmod 6755 test; ls -l test
        -rwsr-sr-x  1 root root 0 Jul 20 11:27 test
        [root@linux tmp]# chmod 1755 test; ls -l test
        -rwxr-xr-t  1 root root 0 Jul 20 11:27 test
        [root@linux tmp]# chmod 7666 test; ls -l test
        -rwSrwSrwT  1 root root 0 Jul 20 11:27 test
        # 这个例子就要特别小心啦!怎么会出现大写的 S 与 T 呢?不都是小写的吗?
        # 因为 s 与 t 都是取代 x 这个参数的,但是你有没有发现阿,我们是下达 
        # 7666 喔!也就是说, user, group 以及 others 都没有 x 这个可执行的标志 
        # ( 因为 666 嘛! ),所以,这个 S, T 代表的就是‘空的’啦!怎么说? 
        # SUID 是表示‘该档案在执行的时候,具有档案拥有者的权限’,但是档案
        # 拥有者都无法执行了,哪里来的权限给其他人使用?当然就是空的