欢迎光临
我们一直在努力

Ubuntu零基础入门到精通【8.10讲】:特殊权限 SUID、SGID、Sticky Bit 深度解析!

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。 本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。   🎯 适合人群: Linux 初学者、Ubuntu 新手、计算机专业学生、后端 / 运维 / 测试入门同学、想搭建 Linux 开发环境的开发者、准备学习服务器部署的同学,以及想从 Windows 过渡到 Ubuntu 工作流的用户。

从“会打开终端”到“能管理系统”,从“复制命令”到“理解 Linux 思维”,这一次,我们不零散学,而是一路滚雪球!   🎉 限时福利:当前专栏活动中,一次订阅,终身阅读,后续更新章节全部免费解锁 👉 立即查看 👈️

演示环境说明:

  • 开发工具:Visual Studio Code / JetBrains 系列 IDE / Vim / Nano
  • Ubuntu版本:Ubuntu 22.04 LTS / Ubuntu 24.04 LTS,推荐 Ubuntu 24.04 LTS
  • Linux内核版本:Linux Kernel 6.x 或更高
  • 终端环境:Bash / Zsh
  • 包管理工具:APT / Snap / Flatpak
  • 远程连接工具:OpenSSH / Windows Terminal / MobaXterm / Termius
  • 虚拟化环境:VMware Workstation / VirtualBox / WSL2 / 云服务器
  • 容器环境:Docker / Docker Compose
  • 操作系统:Ubuntu Desktop / Ubuntu Server

全文目录:

    • 一、前言:权限体系里那个\”被遗忘的角落\”
    • 二、本节要解决什么问题
    • 三、回顾:Linux 权限体系基础
      • 3.1 标准的九位权限
      • 3.2 权限模型的局限性
    • 四、特殊权限的全景概览
    • 五、SUID:以文件属主身份执行
      • 5.1 什么是 SUID
      • 5.2 SUID 的工作机制
      • 5.3 SUID 的典型案例:passwd 命令
      • 5.4 如何设置和查看 SUID
      • 5.5 SUID 的安全风险
      • 5.6 SUID 在目录上没有意义
    • 六、SGID:以文件属组身份执行,以及目录协作神器
      • 6.1 什么是 SGID
      • 6.2 SGID 作用于可执行文件
      • 6.3 SGID 作用于目录:这才是日常用得最多的场景
      • 6.4 如何设置和查看 SGID
      • 6.5 SGID 在团队协作中的实际价值
    • 七、Sticky Bit:谁的文件只有谁能删
      • 7.1 什么是 Sticky Bit
      • 7.2 Sticky Bit 最经典的案例:/tmp 目录
      • 7.3 如何设置和查看 Sticky Bit
      • 7.4 Sticky Bit 的实际应用场景
    • 八、特殊权限的数字表示法
    • 九、实验环境准备
    • 十、案例一:理解 SUID 的运行机制(入门级)
      • 案例目标
      • 步骤一:观察系统中已有的 SUID 文件
      • 步骤二:创建一个简单的 SUID 演示程序
      • 案例一命令解析
    • 十一、案例二:用 SGID 搭建多人协作目录(真实开发场景)
      • 案例目标
      • 背景描述
      • 步骤一:不使用 SGID 的问题复现
      • 步骤二:创建正确的 SGID 协作目录
      • 步骤三:添加第三个用户 carol 并验证
      • 步骤四:处理 umask 带来的潜在问题
      • 案例二命令解析
    • 十二、案例三:Sticky Bit + SGID 构建工程级共享目录(运维增强)
      • 案例目标
      • 背景描述
      • 步骤一:准备用户和组
      • 步骤二:创建 Sticky Bit + SGID 目录
      • 步骤三:验证行为
      • 步骤四:配置安全加固——监控特殊权限文件变化
      • 案例三命令解析
    • 十三、特殊权限的组合使用与流程图解析
    • 十四、核心命令与配置解析
      • chmod 设置特殊权限
      • ls 和 stat 查看特殊权限
      • find 查找特殊权限文件
    • 十五、查找系统中已设置特殊权限的文件
    • 十六、常见问题与踩坑总结
      • Q1:为什么我设置了 SUID,但用户执行后还是没有提权效果?
      • Q2:SGID 设置了,为什么新建文件的属组还是我自己的主组?
      • Q3:Sticky Bit 设置了,但 root 用户还是能删除我的文件?
      • Q4:chmod -R 2775 /data/project 会不会把文件也设置 SGID?
      • Q5:为什么 /tmp 目录的权限是 1777 而不是 1775?
      • Q6:SUID 和 sudo 有什么关系?
      • Q7:我在自己的程序里用了 SUID,部署到 Docker 容器里有效吗?
      • Q8:看到 ls -l 输出里有 \’T\’(大写),是什么意思?
      • Q9:SUID 对 shell 脚本真的完全无效吗?
      • Q10:chmod 修改了权限,重启系统后权限还在吗?
    • 十七、安全审计与特殊权限的生产实践
      • 17.1 建立 SUID 文件基线
      • 17.2 定期安全扫描与告警
      • 17.3 最小化 SUID 原则
    • 十八、最佳实践建议
      • 关于 SUID
      • 关于 SGID
      • 关于 Sticky Bit
      • 关于数字权限记忆
      • 关于安全审计
    • 十九、扩展知识:capabilities 机制——SUID 的现代替代方案
      • 19.1 什么是 Linux Capabilities
      • 19.2 ping 从 SUID 迁移到 Capabilities 的案例
      • 19.3 如何给程序设置 Capabilities
      • 19.4 SUID vs Capabilities:怎么选
    • 二十、完整操作流程回顾
    • 二十一、总结与下节预告
      • 本节学到了什么
      • 学习路径建议
      • 一点学习心得
    • 🧧 学习福利 · 限时开放 🧧
    • 🫵 Who am I?

一、前言:权限体系里那个\”被遗忘的角落\”

学 Linux 权限的时候,绝大多数人都能很快掌握 rwx 这三个字母的含义——读、写、执行,这没什么难的。但如果你仔细观察过系统中某些文件的权限输出,会发现有时候那九个字母里会出现一些奇怪的符号:

-rwsr-xr-x 1 root root 68208 Mar 14 2024 /usr/bin/passwd
drwxrwsr-x 2 root staff 4096 Jun 1 09:12 /var/local
drwxrwxrwt 10 root root 4096 Jun 10 08:45 /tmp

看到了吗?那个 s,那个 t——它们不是普通的读写执行权限,而是 Linux 权限体系里的特殊权限位,也叫\”特殊文件权限\”。

我第一次看到 /usr/bin/passwd 上面的那个 s 的时候,完全没有意识到它的存在。那会儿刚开始用 Ubuntu,只知道 chmod 755 和 chmod 644,觉得权限就那么回事。直到有一次在自己搭建的文件共享目录里,发现不同用户创建的文件互相删不掉,也改不了,翻来覆去排查才发现是 Sticky Bit 的问题——那才第一次认真去看这三个特殊权限到底是干什么的。

说实话,SUID、SGID 和 Sticky Bit 是 Linux 权限体系里比

赞(0)
未经允许不得转载:171主机测评 » Ubuntu零基础入门到精通【8.10讲】:特殊权限 SUID、SGID、Sticky Bit 深度解析!
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址