Linux粘滞位(Sticky Bit)的完全使用指南
创建了一个所有人都能写的共享目录,却发现任何人都能删别人的文件?这时候就需要粘滞位(Sticky Bit)登场了!
共享目录的尴尬问题
假设我们创建了一个共享目录 /my_shared,并给所有人开放了写权限:
sudo mkdir /my_shared sudo chmod o+w /my_shared
此时:
- √用户 A 可以在目录里创建文件
- √用户 B 可以在目录里创建文件
- ×用户 A 可以删除用户 B 创建的文件!
这就是共享目录的尴尬:写权限意味着可以删除目录下的任何文件,包括别人创建的文件。
粘滞位
粘滞位(Sticky Bit)是 Linux 提供的一种特殊权限,专门用于解决上述问题。
如何设置粘滞位?
# 给目录添加粘滞位 sudo chmod +t /my_shared # 查看权限,末尾的 t 表示粘滞位 ls -ld /my_shared # drwxrwxrwt 1 root root 4096 ... /my_shared
设置粘滞位后,目录下的文件只能由以下角色删除:
- 超级管理员(root)
- 目录的所有者
- 文件的所有者
普通用户只能删除自己创建的文件,无法动别人的"奶酪"!
粘滞位的权限表示
显示方式
ls -ld /tmp # drwxrwxrwt 10 root root 4096 ... /tmp # 拆解: # d -> 目录 # rwx -> 所有者权限(读、写、执行) # rwx -> 所属组权限 # rwt -> 其他人权限(末尾的 t 表示粘滞位)
- 小写 t:表示目录有执行权限 + 粘滞位
- 大写 T:表示目录没有执行权限,但有粘滞位(不常见)
数字形式
# 权限数字 = 正常权限 + 粘滞位(1) # 775 + 1 = 1775 sudo chmod 1775 /my_shared
粘滞位的典型应用场景
1. /tmp 目录
Linux 系统的 /tmp 目录就是最典型的粘滞位应用:
ls -ld /tmp # drwxrwxrwt 17 root root 4096 ... /tmp
所有用户都能在 /tmp 下创建临时文件,但只能删除自己创建的文件,避免了"混乱删除"的问题。
2. 项目共享目录
多人协作的开发环境:
# 项目组共享目录 sudo mkdir /project/shared sudo chown :developers /project/shared sudo chmod 1777 /project/shared
3. 公共下载目录
团队内部的资源分享目录:
sudo mkdir /downloads sudo chmod 1777 /downloads
原理:粘滞位如何工作?
从内核角度理解:
- 当用户对目录有 写权限 时,可以删除目录下的文件
- 但如果目录设置了 粘滞位,内核会在删除操作前额外检查:
- 当前用户是否是文件的所有者?
- 当前用户是否是目录的所有者?
- 当前用户是否是 root?
只有满足上述条件之一,删除操作才会被允许。
实战:创建一个安全的共享目录
# 1. 创建共享目录(需要 root 权限) sudo mkdir /team_workspace # 2. 设置所有者(假设是 team 组) sudo chown :team /team_workspace # 3. 给组用户完整权限,给其他人读和执行权限(770) sudo chmod 770 /team_workspace # 4. 添加粘滞位,防止成员误删他人文件 sudo chmod +t /team_workspace # 5. 查看最终权限 ls -ld /team_workspace # drwxrwsr-t 2 root team 4096 ... /team_workspace
总结
- 粘滞位(Sticky Bit) 是共享目录的"保护神"
- 设置命令:
chmod +t 目录名 - 效果:只能删除自己创建的文件,无法删除他人文件
- 典型应用:
/tmp、团队共享目录、公共资源目录
免责声明
本文仅用于学习交流 Linux 权限机制。实际使用中请根据团队需求合理设置权限,敏感目录建议配合 ACL 使用!
到此这篇关于Linux粘滞位(Sticky Bit)的完全使用指南的文章就介绍到这了,更多相关Linux粘滞位(Sticky Bit)使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法
这篇文章主要介绍了Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-04-04
Linux centos下php安装cphalcon扩展的方法
这篇文章主要介绍了Linux下php安装cphalcon扩展的方法,需要的朋友可以参考下2017-02-02
Linux QT Kit丢失及Version为空问题解决方案
这篇文章主要介绍了Linux QT Kit丢失及Version为空问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-08-08


最新评论