Linux文件普通权限rwx

Linux文件特殊权限SUID、SGID、SBIT(sticky)

SUID权限

SGID权限

SBIT权限(sticky)

注意:

Linux文件普通权限rwx

“r”表示“读取”,对应进制数字4

"w"表示”写入“,对应八进制数字2

"x"表示“执行”,对应八进制数字1

常见文件权限表示”777“对应二进制表示为0~8位

9 8 7 6 5 4 3 2 1 0

-r w x r w x r w x

三个二进制位为一个用户权限表示

如:r-x的二进制表示为101,八进制为5

-wx的二进制表示为011,八进制为3

rwx的二进制表示为111,八进制为7

0~2表示其他用户权限;

3~5表示组用户权限;

6~8表示所有用户权限;

9表示文件类型:

        p表示命名管道文件

        d表示目录文件

        l表示符号连接文件

        -表示普通文件

        s表示socket文件

        c表示字符设备文件

        b表示块设备文件

Linux文件特殊权限SUID、SGID、SBIT(sticky)

SUID权限作用于文件属主

SGID权限作用于文件属组

SBIT权限作用于其他用户上

在实现上述特殊权限位为9~11位

11 10 9 8 7 6 5 4 3 2 1 0

 S  G  T r w x r w x r w x

第11位为SUID位,表示SUID权限,八进制为4

第10位为SGID位,表示SGID权限,八进制为2

第9位为SBIT位,表示SBIT权限,八进制为1

如只设置SUID位为4777

只设置SGID位为2777

只设置SBIT位为1777

同时设置SUID、SBIT为数字之和“6777”依此类推

SUID权限

-rwsrwxrwx

当s这个标志出现在文件所有者的x权限上时,表示所有者用户暂时对这个文件有了拥有者权限。

作用:

  1. SUID权限仅对二进制可执行文件有效

  2. 执行者对于该可执行文件需要具有x权限

  3. 在执行过程中,调用者会暂时获得该文件的拥有者权限

  4. 该权限只在程序执行的过程中有效

SUID权限中的s有大小写之分,如果强行给普通文件添加s权限,那么显示的是大写的S,因为普通文件没有x权限,这样显示的suid其实没什么用,因为它并不是可执行文件。只有给文件添加了x权限后,suid才有效

SUID权限使用s表示,增加权限u+s,移除权限u-s; SUID权限也可以使用数字形式表示,0表示去除SUID权限,4表示添加SUID权限,而且是在原权限的数字表达形式开头加0或4,如:0755移除SUID权限,4755添加SUID权限

SGID权限

-rwxrwsrwx当s出现在文件的所属组x权限位置上时,表示文件使用者用户暂时有了该文件的所属组权限。

作用:

  1. 既可以作用于目录,也可以作用于可执行文件

  2. 只要父目录有SGID权限,所有的子目录都会递归继承

  3. 执行者对于该可执行文件需要具有x权限

  4. 在执行过程中,调用者会暂时获得该文件的所属组权限

同样SGID的s权限也是分大小写的,当所属组没有x权限的时候,设置SGID后就会变成大写的S,这点跟SUID一样。

SGID权限使用s表示,增加权限g+s,移除权限g-s; SGID权限也可以使用数字形式表示,0表示去除SGID权限,2表示添加SGID权限,而且是在原权限的数字表达形式开头加0或4,如:0755移除SGID权限,2755添加SGID权限

SBIT权限(sticky)

-rwxrwxrwt

当t出现在其他组的x权限位置时,表示其他组具有SBIT的权限。

作用:

  1. 当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。

  2. 只针对目录有效

最具有代表的就是/tmp目录,任何人都可以在/tmp内增加、修改文件(因为权限全是rwx),但仅有该文件/目录建立者与 root能够删除自己的目录或文件。

权限t也有大小写之分,大写说明没有x权限,小写说明有x权限,这点和权限s是一样的。

SBIT权限使用t表示,增加权限o+t,移除权限o-t; SBIT权限也可以使用数字形式表示,0表示去除权限,1表示添加权限,而且是在原权限的数字表达形式开头加0或1,如下:如:0755移除SBIT权限,1755添加SBIT权限。

注意:

SUID虽然很好了解决了一些问题,但是同时也会带来一些安全隐患。 因为设置了 SUID 位的程序如果被攻击(通过缓冲区溢出等方面),那么hacker就可以拿到root权限。 因此在安全方面特别要注意那些设置了SUID的程序。

通过以下的命令可以找到系统上所有的设置了SBIT的文件:

find / -perm -04000 -type f -ls

对于这里为什么是4000,大家可以看一下前面的八进制代表的意义就明白了。

在这些设置了SBIT 的程序里,如果用不上的,就最好取消该程序的SBIT 位。

Logo

更多推荐