zoukankan      html  css  js  c++  java
  • linux粘着位

    在linux中,如果对一个目录具有写权限,那么我们就可以在这个目录下创建删除文件。

    现在我们要创建这样一个目录,我们可以在这个目录里创建文件,但是其他用户不能删除这个文件。

    在这里就要用到一个特殊的权限:粘着位

    在linux中有三种特殊权限,分别为:

    SetUID  =  4:在所有者设置的权限     

    SetGID  =  2:在所属组设置的权限

    粘着位  =  1:在其他人的位置设置的  (使用  t  来表示)

    一、SBIT粘着位权限的作用

    如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所有者,而且也没有读或写许可。粘着位出现执行许可的位置上,用t表示,设置了该位后,其它用户就不可以删除不属于他的文件和目录。但是该目录下的目录不继承该权限,要再设置才可使用。

     如果没有粘着位,因为普通用户有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件外,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。

    普通文件的sticky位会被linux内核忽略。

    目录的sticky位表示这个目录里的文件只能被owner和root删除 。

    /tmp常被我们用来存放临时文件,是所有用户。但是我们不希望别的用户随随便便的就删除了自己的文件,于是便有了粘着位,它的作用便是让用户只能删除属于自己的文件。

    1.  $ ls -dl /tmp  
    2. drwxrwxrwt 15 root   root  .........  

    那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 假如本来在该位上有x, 则这些特别标志 (suid, sgid, sticky) 显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T) 。

    例如:
    tmp目录的权限是777,也就是任何用户对这个目录里的文件都具有全部权限,包括新建和删除。
    但是问题来了,比如a用户在这个目录里新建一个文件还没有编辑完呢,有事回家了,准备等回来继续编辑。这时候b用户进来了,看到里面了a用户建立的文件,不知道有什么用,于是就给删除了,这样就等于出现了管理混乱,每个用户都可以随便删除其他用户的文件。

    那么解决的办法就是给tmp目录的其他人身份添加粘着位SBIT权限,那么按照前面SBIT权限的说明,除了root外的任何普通用户在这个目录里都只能删除自己建立的文件,而不能删除其他用户的文件,这样就保证了不会出现混乱情况。

    这就是粘着位SBIT权限的作用。

    而其实/tmp目录不用我们特别设置SBIT权限的,他默认就本身带有这个权限的,如图:
    tmp目录的t权限
    看到了吧,其他人身份的权限是rwt,也就是在rwx基础上多了一个t,这个t就是SBIT粘着位权限的意思。

    二、SBIT的设置与取消
    那么粘着位的设置是不会和SUID ,SGID那么危险的。
    只要我们有需要我们就可以新建一个具有1777权限的目录来作为多用户可以共享的目录,也挺方便的。

    1、设置粘着位
    A、chmod 1777 目录名
    B、chmod o+t 目录名

    2、删除粘着位
    A、chmod 777 目录名
    B、chmod o-t 目录名

  • 相关阅读:
    C#中使用$"{}"替换string.Format()
    js==>id-pid转children【】树结构数据
    React使用模板
    C#--fetch配置使用
    ...扩展运算符解释
    java之死锁
    Stream流
    lambda 之 forEach( ->{} )
    java基础之递归(九九乘法表)
    java读取 .xlsx格式文件转成list
  • 原文地址:https://www.cnblogs.com/yuanshuang/p/5619157.html
Copyright © 2011-2022 走看看