当前位置: 首页 > news >正文

Linux粘滞位的设置

    粘滞位(Stickybit),或粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。

Sticky 位是一个访问权限标志位,可以用来标示文件和路径。

历史:

粘滞位是在1974年Unix的第5版中引入的,用来设置可执行文件。当可执行文件设置粘滞位之后,它能够指示操作系统在程序退出后,保留程序的代码段到swap空间。当程序再次执行时,内核只需将程序从swap搬到内存即可,这能够加速程序的执行。所以,频繁使用的程序比如编辑器能够更快的打开。目前,这种应用只是适用于HP-UX, NetBSD和UnixWare,Solaris在2005年放弃了这种应用,linux没有版本支持过这种行为。

当今使用:

当今,粘滞位最常用是应用于路径。当路径被设置粘滞位后,路径下的文件只有文件的owner,路径的owner, 或者root 才能够重命名、删除文件。如果没有粘滞位,任何用户,不管是不是owner, 只要有路径的写/执行权限就可以重命名、删除文件。典型的应用就是/tmp路径,粘滞位可以阻止一般用户删除/重命名其他用户的文件。这种特性首次引入是在1986年4.3BSD, 今天在现在的Unix系统中都可以找到这个特性。另外,Solaris定义了独有的行为:当粘滞位设置到非执行文件时,当访问这种文件时,内核将不会缓存。这常用于设置swap文件,用来阻止访问这些文件时冲刷掉系统缓存中更重要的数据。

Linux: 当粘滞位设置到文件时,内核将会忽略。当设置路径时,路径中的文件只能够被root或者文件的owner重命名或者unlinked。

在Linux系统中较典型的例子就是“/tmp”、 “/var/tmp”目录录。这两个目录录作为Linux系统的临时文件

夹,权限为“rwxrwxrwx”,即允许任意用户、任意程序在该目录中进行创建、删除、移动文件或者目录等操作。

但是,若任意一个普通用户都能够删除系统服务运行中使用的临时文件,将造成什么结果?

  粘滞位权限便是针对此种情况设置,目录被设置了粘滞位权限以后,即便用户对该目录有写入权限,也不

能删除该目录中其他用户的文件数据,只有该文件的所有者和root用户才有权将其删除。设置了粘滞位之后,

正好可以保持以种动态的平衡:允许各用户在目录中任意写入、删除数据,但是禁止随意删除其他用户的数据。

举例:

Sticky bit 设置:

需要注意的是, 粘滞位权限只能针对目录设置,对于文件无效。
  设置了粘滞位权限的目录,使用ls命令查看其属性时,其他用户权限处的“x”将变为“t”。
  例如,查看/tmp、 /var/tmp目录本⾝的权限,确认存在“t”标记。

粘滞位权限都是针对其他用户( other)设置,使用chmod命令设置目录权限时,

“o+t”、 “o-t”权限模式可分别用于添加、移除粘滞位权限。
  例如,为/test目录设置粘滞位权限。

此时普通用户便无法删除/test.c1文件了。

粘滞位权限在生产环境中也被广泛应用,当需要为用户提供一个开放幕录而又不希望造管理混乱时,通过为目录设置粘滞位权限便可以解决问题。

 

转载于:https://www.cnblogs.com/33debug/p/6628868.html

相关文章:

  • 千万PV级别WEB站点架构设计2
  • Qt学习一、简单的登陆验证
  • LVM,
  • 判断条件总结
  • StringBuffer(常见功能 添加)
  • 初识angular体验(二)
  • floyd算法
  • 编程之道
  • ListView嵌套webView 事件冲突解决
  • mysql的binlog太大太多占用大量磁盘
  • MD5
  • C++实践参考——职员有薪水了
  • Linux下的远程桌面工具—tigervnc
  • 利用Yii框架中的collections体验PHP类型化编程
  • 盘点那些不知名却常用的 Git 操作
  • golang中接口赋值与方法集
  • MobX
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • vue-loader 源码解析系列之 selector
  • 番外篇1:在Windows环境下安装JDK
  • 给初学者:JavaScript 中数组操作注意点
  • 关于Java中分层中遇到的一些问题
  • 技术胖1-4季视频复习— (看视频笔记)
  • 解析 Webpack中import、require、按需加载的执行过程
  • 普通函数和构造函数的区别
  • 探索 JS 中的模块化
  • 消息队列系列二(IOT中消息队列的应用)
  • 一道面试题引发的“血案”
  • 移动端 h5开发相关内容总结(三)
  • scrapy中间件源码分析及常用中间件大全
  • 选择阿里云数据库HBase版十大理由
  • #QT项目实战(天气预报)
  • #前后端分离# 头条发布系统
  • (20050108)又读《平凡的世界》
  • (31)对象的克隆
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (poj1.3.2)1791(构造法模拟)
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (转载)利用webkit抓取动态网页和链接
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .form文件_SSM框架文件上传篇
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net framework profiles /.net framework 配置
  • .NET序列化 serializable,反序列化
  • .NET中统一的存储过程调用方法(收藏)
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .project文件
  • @我的前任是个极品 微博分析
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [Angular 基础] - 指令(directives)
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [C++]模板与STL简介
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算
  • [CSS] - 修正IE6不支持position:fixed的bug