文件的粘滞位(sticky bit)

本文详细解释了Linux系统中文件和目录的粘滞位(sticky bit)功能,包括其历史背景和现代用途。特别是如何通过设置粘滞位来保护/tmp等公共目录中的文件,确保仅文件所有者或root用户才能删除。
文件的粘滞位(sticky)位是作什么用的? 
普通文件的sticky位会被linux内核忽略,  
目录的sticky位表示这个目录里的文件只能被owner和root删除  
  
粘着位(Sticky bit):如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所有者,

而且也没有读或写许可。粘着位出现执行许可的位置上,用t表示,设置了该位后,其它用户就不可以删除

别人的文件和目录。但是该目录下的目录不继承该权限,要再设置才可使用。    

  
# chmod 1770 xxx  
  
举一个linux下的常见目录来做例子,也就是 /tmp 目录来说一下粘连位的作用。  
#ls -dl /tmp  
drwxrwxrwt 4 root    root  .........  
注意other位置的t,这便是粘连位。  

我们都知道,/tmp常被我们用来存放临时文件,是所有用户。但是我们不希望别的用户随随便便的

就删除了自己的文件,于是便有了粘连位,它的作用便是让用户只能删除属于自己的文件。  

  
那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 假如本来在该位上有x, 则这些特别标志 (suid, sgid, sticky) 
显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T) 。  
  
  
3)粘着位(sticky)  
  
eg:  
  
chmod 777 abc  
  
chmod +t abc  
  
等价于  
  
chmod 1777 abc  
  
在以前旧的系统当中,如果一个程序文件一旦设置了粘着位,  
那么当该程序中止的时候他的所有指令段将被保存到系统的交换分区当中,  
再次运行时可以更快的调入系统.  
  
不过现在的操作系统已经不再使用这种功能了.  
但这并不表示这一功能已经完全被废弃.  
当一个目录设置为粘着位时,它将发挥特殊的作用,  
  
即当一个目录被设置为"粘着位"(用chmod a+t),则该目录下的文件只能由  
一、超级管理员删除  
二、该目录的所有者删除  
三、该文件的所有者删除  
也就是说,即便该目录是任何人都可以写,但也只有文件的属主才可以删除文件。  
任务描述 相关知识 stick bit 编程要求 测试说明 任务描述 假设由用户A在Dir目录下创建了一个文件testA,用户B在Dir目录下创建了一个文件testB,此时如何确保A用户不能删除B用户创建的文件而B用户也不能删除A用户创建的文件,通过本关的学习,我们将学会解决以上问题。 本关任务:对系统已存在的目录设置sticky bit。 相关知识 Linux中目录除了有可读、可写和可执行这三种权限外,还存在比较特殊的权限,这些特殊权限包括上一关卡讲解的setuid和setgid这两种,还有一种就是本关讲解的**粘滞sticky bit**。 我们知道Linux的/tmp目录是系统的临时文件目录,所有的用户在该目录下拥有所有的权限,也就是说在该目录下可以任意创建、修改、删除文件,那如果用户A在该目录下创建了一个文件,用户B将该文件删除了,这种情况我们是不能允许的。为了达到该目的,就出现了stick bit粘滞)的概念。它是针对目录来说的,如果该目录设置了stick bit粘滞),则该目录下的文件除了该文件的创建者和root用户可以删除和修改,别的用户均不能删除和修改,这就是粘滞的作用。 Linux目录权限使用常见的八进制权限掩码来表示的,通常都是用三数表示,但确切地说,它是用四数表示的,因为除了读、写和执行权限以外还有特殊的权限。 sticky bit的八进制表示为1000 同样sticky bit也可以使用字母表示,使用t表示。 如果目录的其他用户的可执行是t,则表示该目录被设置sticky bit权限。 接下让我们详细的学习目录的sticky bit的使用方法。 stick bit stick bit的作用是让具有stick bit的目录下的所有文件/目录只有创建者和root才能对其删除和修改,其他用户一律不能删除和修改。 例如:Linux的/tmp目录就具有stick bit权限,详细权限如下所示: 可以看到/tmp目录的其他用户的可执行是t,则说明/tmp目录被设置了stick bit权限。 设置stick bit命令有两种方法,一种是数字设置,另一种是通过助记语法。建议使用助记语法设置stick bit权限。 数字设置命令:chmod 1xxx 目录 其中xxx表示目录的所有者、同组用户和其他用户的权限(读写执行)。 助记语法设置命令:chmod o [+|-] t 目录 + 添加stick bit权限; - 取消stick bit权限; 注意: chmod命令的其他参数都可以与stick bit权限设置结合使用。 在设置stick bit前必须保证目录的其他用户具有可执行权限,否则设置则无效。 stick bit权限只能用于设置目录,不能用于设置文件。 执行权限: chmod必须以root权限才能执行,如果是普通用户想执行chmod时,需要在命令前加sudo命令来提升权限为root权限。 案例演示1: 创建一个新目录testDir,使用助记语法设置方法为目录testDir添加stick bit权限,具体使用如下命令: mkdir testDir sudo chmod o+t testDir ls -l . 如果不给目录testDir设置可执行权限直接设置stick bit权限后,标记为是T而不是t,详细结果如下图所示: 案例演示2: 创建一个新目录testDir,使用数字设置方法为目录testDir添加stick bit权限,具体使用如下命令: mkdir testDir ls -l ./ sudo chmod 1775 testDir ls -l ./ 第一条命令是创建新目录testDir; 第二条命令是查看testDir现有的权限; 第三条命令是在保证testDir原有权限的情况下为其添加stick bit权限; 第四条命令是查看是否添加成功; 案例演示3: 将目录testDir取消stick bit权限,具体使用如下命令: sudo chmod o-t testDir ls -l . 编程要求 在右侧编辑器中补充代码,完成对目录设置stick bit权限,具体编程要求如下: 使用助记语法为系统已存在目录oldDir1(默认权限为:rwxrwxrwx)设置stick bit权限; 使用助记语法为系统已存在目录oldDir2取消stick bit权限。 测试说明 平台将对你编写的代码进行评测: 预期输出: 设置oldDir1目录权限成功 设置oldDir2目录权限成功 一个人几乎可以在任何他怀有无限热忱的事情上成功。 ——查尔斯·史考伯 开始你的任务吧,祝你成功!
最新发布
06-20
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值