Linux中的特殊权限粘滞位(sticky bit)详解

发表于:2016-9-01 10:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Mr_listening    来源:51Testing软件测试网采编

  Linux下的文件权限
  在linux下每一个文件和目录都有自己的访问权限,访问权限确定了用户能否访问文件或者目录和怎样进行访问。最为我们熟知的一个文件或目录可能拥有三种权限,分别是读、写、和执行操作,在这里不做详细说明。我们创建一个文件后系统会默认地赋予所有者读和写权限。当然我们也可以自己修改它,添加自己需要的权限。
  特殊权限
  但是这三种权限就足够了吗?我们现在来说说在linux下的另一个特殊权限。首先我们来看看在根目录下的一个目录tmp,可以看到tmp目录的other权限是'rwt',那么这里的t又是什么权限呢,有什么意义。
  在理解这个权限之前我们先来看看tmp这个目录是存放什么东西的,linux下tmp目录是存放一些临时文件的,那么上图可以看到,该目录的所有者和组用户的权限都是rwx,对于other的权限是rwt。
  我们知道如果一个目录的other权限设置有写和执行权限的话,那么别的用户也是可以在该目录下进行创建文件和删除文件等操作,我们来试一试:
  现在是root用户,在它的根目录下创建了一个cur目录,并且赋予了777权限。
  之后再给cur目录下新建了test1和test2两个文件,而此时我们可以看到这两个文件的other权限只有一个读权限。
  现在我们切换用户到dh用户下,试着删除刚刚新建的文件,发现是完全可以删除的。那么这就存在了一个问题,像/tmp目录的权限是应该设置成"rwxrwxrwx"的,因为它要允许任何用户都能在该目录下创建、删除、移动文件等操作。但我们刚刚也看到了,我的dh用户是可以删除root用户在cur目录下创建的文件夹,那么对于tmp目录,任意用户都可以删除系统服务运行中的临时文件(别的用户的),那么这肯定是我们不想要的。
  所以回到最初,我们看到tmp目录的权限是"rwxrwxrwt",这里的t就起了相当重要的作用。
  粘滞位(粘着位)
  上面所说的t权限就是我们在这里要讲的粘滞位(sticky bit),我们给刚刚的cur目录采用chmod o+t的方式给other用户设置粘滞位。
  然后我们继续切换到dh用户,看看我们能否继续之前的删除操作:
  可以看到此时我们是没有权限删除root用户创建的文件了,这也就是粘滞位的作用。
  粘滞位权限便是针对此种情况设置,当记录被设置了粘滞位权限以后,即便用户对该记录有写权限,也不能删除该记录中其他用户的文件数据,还是只有该文件的所有者和root用户才有权将其删除。设置了粘滞位之后,正好可以保持?种动态的平衡:允许各用户在记录中任意写入、删除数据,但是禁止随意删除其他用户的数据。
  几点说明
  对于特殊权限的添加是添加在原有的执行权限上的,所以特殊权限添加的要求需要文件或者目录本身具有可执行权限。
  上图中,我去掉了cur的other的执行权限,可以看到本来't'的位置变成了'T',此时dh用户在cur目录中是不具有权限来进行一系列操作的。
  那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 假如本来在该位上有x, 则这些特别标志 (suid, sgid, sticky) 显示为小写字母 (s, s, t).否则, 显示为大写字母 (S, S, T) 。
  注意事项
  》粘滞位权限是针对目录的,对文件无效
  上述的这些操作是在root用户下创建了一个test.c文件,然后添加了t权限,然而在dh用户下还是可以直接进行删除的。所以粘滞位是针对有执行权限的目录的,对于文件添加粘滞位并没有什么作用。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号