4.10 粘着位

S_ISVTX位最初用于UNIX系统中保存经常使用的程序副本以加快加载速度,后被称为保存正文位。现代UNIX系统扩展了其功能,允许在目录上设置此位,以限制普通用户删除或重命名不属于他们的文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  S_ISVTX位由一段有趣的历史。在UNIX尚未使用请求分页式技术的早期版本中,S_ISVTX位被称为粘着位。如果一个可执行程序文件的这一位被设置了,那么当程序第一次被执行,在其终止时,程序正文部分的一个副本仍被保存在交换区(程序的正文部分时机器指令)。这使得下次执行该程序时能较快地将其装载入内存。其原因是:通常的UNIX文件系统中,文件的各数据块很可能是随机存放的,相比较而言,交换区是被作为一个连续文件来处理的。对于通用的应用程序,如文本编辑程序和C语言编译器,我们常常设置它们所在文件的粘着位。自然地,对于在交换区中可以同时存放的设置了粘着位的文件数是有限制的,以免过多占用交换区空间,但无论如何这时一个有用的技术。因为在系统再次自举前,文件的正文部分总是在交换区中,这正是名字总“粘着”的由来。后来的UNIX版本称它为保存正文位,因此也就有了常量S_ISVTX。现今较新的UNIX系统大多数都配置了虚拟存储系统以及快速文件系统,所以不再需要使用这种技术。

    现今的系统扩展了粘着位的使用范围,Single UNIXSpecification允许针对目录设置粘着位。如果对一个目录设置了粘着位,只有对该目录具有写权限的用户并且满足下列条件之一,才能删除或重命名该目录下的文件:

  • 拥有此文件
  • 拥有此目录
  • 是超级用户

    目录/tmp和/var/tmp是设置粘着位的典型候选者---任何用户都可在这两个目录中创建文件。任一用户(用户、组和其他)对这两个目录的权限通常都是读、写和执行。但是用户不应能删除或重命名属于其他人的文件,为此在这两个目录的问阿金模式中都设置了粘着位。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值