在Linux的系统中,常见的文件或目录的权限为r,w,x三种。三种权限的相互组合,可以给目录或文件做出各种限制。其实除了这3中常见的权限外,还有3个特殊权限,分别为suid,guid,sticky,下面介绍一下这3中特殊权限的作用和修改。


1.suid

    当对一个可执行的二进制文件作用了suid权限之后,任何人在执行该文件时临时拥有其所属人的权限。

    用法:chmod    u+/-s  

    如下图举例,在1处查看/bin下的二进制文件touch,是没有suid权限的,当在普通用户下用/bin/touch创建一个aa文件时,文件所属人为当前普通用户sunwukong;在2处,给/bin/touch加上一个suid权限,再在普通用户下创建一个bb文件,可以查看到bb文件的所属人为root,而不是普通用户sunwukong。

    


    

2.sgid

   (1) 当对一个可执行的二进制文件作用了sgid权限之后,任何人在执行该文件时临时拥有其所属组的权限。

   用法:chmod    g+/-s 

    给/bin/touch加上sgid权限后,在普通用户下调用该文件创建一个文件cc,其所属组为root。

    

    

    (2) 当对于一个目录作用了sgid权限之后,任何人在该目录下创建的文件的所属组与该目录的所属组相同。

    先把/bin/touch加的特殊权限去掉

    

    

    在1中,目录/app没有加sgid权限,用普通用户在该目录下创建了一个test1文件,所属组为普通用户sunwukong;在2中给/app目录加上sgid权限,在创建/app/test2文件,其所属组为root,和目录/app的所属组一样。

    

3.sticky

    当对于一个目录作用了sticky权限之后,该目录下的文件仅其文件的所属人,或目录的所属人及root才能删除。

    用法:chmod    o+/-t 

    在普通用户sunwukong下,在/app下创建一个test目录,该目录的用户和用户组都可以对目录下的文件删除和创建,再创建一个/app/test/aa文件。切换到普通用户sunxingzhe下,该用户和sunwukong都在sunwukong这个组里面,所以可以在该用户下删除aa文件。

    

    

    在下图中,给/app/test目录加上sticky权限后,在创建一个bb文件,发现在sunxingzhe用户下不能删除该文件了。

    

    

注意:这三中权限也可以用数字表示,分别为4,2,1。如chmod 6***(***为对应的rwx权限) ,6代表既有suid权限,又有sgid权限。权限位原本有x的,加上特殊权限后,显示为小写,原本无x,显示为大写。

    下图1处test权限为rwxrwxr--,在2处给该目录增加sgid和sticky权限,增加后,在3处目录权限为rwxrwsr-T,s小写,因为原权限位有x,而T大写,因为原权限位没有x。