python中sticky_linux系统中的特殊权限之SBIT(Sticky BIT)

***linux系统中的特殊权限之SUID(Set UID)***

***linux系统中的特殊权限之SGID(Set GID)***

***linux系统中的特殊权限之SBIT(Sticky BIT)***

前言

之前,我用2篇文章分别展示了SUID和SGID的用法。今天,我接着之前的SGID来介绍今天的主角—SBIT。想对之前的SUID和SGID有所了解的朋友可以查看上面的3个相关链接。

SBIT(Set BIT)(粘滞位)

SBIT的作用

之前已经提到了,当一个目录对于属组可写(或者全局可写)时,组内的所有用户(或者所有其他用户)都可以在此该目录内创建新文件和删除所有的文件,这样的权限是致命的;如果此时我们为此类目录设置了SBIT权限,则属组内的每个用户(或者所有其他用户)都只能创建新文件和删除自己的文件,但是不能删除其他用户的文件。

实例讲解

默认情况(不使用SBIT)

当一个目录的属组拥有w权限后,属组中的用户可以在这个目录中创建文件;但是,这又一个重要的问题,那就是一个用户可以随意删除其他用户创建的文件。

#下面的示例中,用tom可以任意删除jerry创建的文件,这是非常危险的。

[tom@centos7u6 tmp]$ ls -ld /tmp/test_SGID/

drwxrwsr-x 2 root workgroup 58 Mar 30 17:38 /tmp/test_SGID/

[tom@centos7u6 tmp]$ ls -l /tmp/test_SGID/

total 16

-rw-rw-r-- 1 jerry workgroup 24 Mar 30 13:45 jerry2.test

-rw-rw-r-- 1 jerry jerry 6 Mar 30 13:27 jerry.test

-rw-rw-r-- 1 tom workgroup 21 Mar 30 13:48 tom2.test

-rw-rw-r-- 1 tom tom 4 Mar 30 13:14 tom.test

[tom@centos7u6 tmp]$ rm /tmp/test_SGID/jerry.test

rm: remove write-protected regular file ‘/tmp/test_SGID/jerry.test’? y

[tom@centos7u6 tmp]$ ls -l /tmp/test_SGID/

total 12

-rw-rw-r-- 1 jerry workgroup 24 Mar 30 13:45 jerry2.test

-rw-rw-r-- 1 tom workgroup 21 Mar 30 13:48 tom2.test

-rw-rw-r-- 1 tom tom 4 Mar 30 13:14 tom.test

至此,最后一个特殊权限,SBIT隆重登场。

使用SBIT权限

#先为之前的/tmp/test_SGID目录设置SBIT,权限

注意:此时目录的other的x权限位,变成了小t

[root@centos7u6 test_SGID]# chmod o+t /tmp/test_SGID/

[root@centos7u6 test_SGID]# ls -ld /tmp/test_SGID/

drwxrwsr-t 2 root workgroup 58 Mar 30 17:38 /tmp/test_SGID/

#设置完成后,tom用户只能删除自己的文件,但是不能删除jerry的文件。这样,在提供了共享目录的同时,又在一定程度上保证了数据的安全性。

[tom@centos7u6 test_SGID]$ rm -rf /tmp/test_SGID/tom

tom2.test tom.test

[tom@centos7u6 test_SGID]$ rm -rf /tmp/test_SGID/tom.test

[tom@centos7u6 test_SGID]$ rm -rf /tmp/test_SGID/jerry2.test

rm: cannot remove ‘/tmp/test_SGID/jerry2.test’: Operation not permitted

[tom@centos7u6 test_SGID]$ ls -l /tmp/test_SGID/

total 8

-rw-rw-r-- 1 jerry workgroup 24 Mar 30 13:45 jerry2.test

-rw-rw-r-- 1 tom workgroup 21 Mar 30 13:48 tom2.test

SBIT的用法

第一种方法:

chmod o+|-t DIRCTORYNAME

设置权限:chmod o+t /tmp/test

取消:chmod o-t /tmp/test

第二种方法:

使用8进制赋权

设置权限:chmod 1755 /tmp/tet

取消:chmod 755 /tmp/test

SUID

SGID

SBIT

八进制权限

0

0

0

0

0

0

1

1

0

1

0

2

0

1

1

3

1

0

0

4

1

0

1

5

1

1

0

6

1

1

1

7

判断是否有SBIT权限

SBIT的权限展示位,在other用户的x权限位上。

如果有SBIT

属组原本有执行权限,则属组的执行权限位,显示为小t

属组原本没有执行权限,则属组的执行权限位,显示为大写T

如果没有SBIT

属组的执行权限位,仍然按其基本权限,显示为x或者-

加点小料:/tmp目录

其实用linux系统的/tmp目录就是使用SBIT权限.

其中/tmp目录的基本权限为777,这保证了所有用户都可以在目录中创建和删除文件。

同时,由于/tmp设置了SBIT,所以保证了每个用户都只能删除自己的文件(老流氓root除外)

[root@centos7u6 test_SGID]# ls -ld /tmp

drwxrwxrwt. 11 root root 269 Mar 30 17:18 /tmp

使用SBIT的注意事项

SBIT权限只针对目录有效

用户对该目录w和x有效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值