<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>权限管理 on CAO ZUOHUA</title><link>https://caozuohua.github.io/tags/%E6%9D%83%E9%99%90%E7%AE%A1%E7%90%86/</link><description>Recent content in 权限管理 on CAO ZUOHUA</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 14 Sep 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://caozuohua.github.io/tags/%E6%9D%83%E9%99%90%E7%AE%A1%E7%90%86/index.xml" rel="self" type="application/rss+xml"/><item><title>不仅是读写：解密 Linux 文件权限与特权提升</title><link>https://caozuohua.github.io/posts/2026-09-14-linux-permissions-security/</link><pubDate>Mon, 14 Sep 2026 11:00:00 +0800</pubDate><guid>https://caozuohua.github.io/posts/2026-09-14-linux-permissions-security/</guid><description>&lt;h1 id="不只是读写解密-linux-文件权限与特权提升"&gt;不只是读写：解密 Linux 文件权限与特权提升&lt;/h1&gt;&#10;&lt;p&gt;在 Linux 中，“一切皆文件”。文件权限不仅定义了数据的可访问性，更是系统安全与特权管理的核心。&lt;/p&gt;&#10;&lt;h2 id="权限模型回顾"&gt;权限模型回顾&lt;/h2&gt;&#10;&lt;p&gt;除了标准的 UGO（User/Group/Others）读、写、执行权限外，Linux 还引入了特殊权限位，它们往往是系统安全防护的边界，也是攻击者眼中的“金矿”。&lt;/p&gt;&#10;&lt;h3 id="关键特殊位suidsgidsticky-bit"&gt;关键特殊位：SUID/SGID/Sticky Bit&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;SUID (Set User ID)&lt;/strong&gt;：赋予执行文件，进程运行时将以该文件的所有者（通常是 root）身份运行。这是系统程序（如 &lt;code&gt;passwd&lt;/code&gt;）实现非特权用户修改密码的关键。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;SGID (Set Group ID)&lt;/strong&gt;：赋予文件时效果类似 SUID；赋予目录时，在该目录下创建的新文件会自动继承父目录的所属组。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Sticky Bit (粘滞位)&lt;/strong&gt;：通常用于共享目录（如 &lt;code&gt;/tmp&lt;/code&gt;），确保用户只能删除属于自己的文件。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="提权为何-suid-是危险的"&gt;提权：为何 SUID 是危险的？&lt;/h2&gt;&#10;&lt;p&gt;如果一个配置不当的程序拥有 SUID 位（且所有者为 root），它就可能成为提权的跳板。&lt;/p&gt;&#10;&lt;h3 id="场景分析利用-suid-执行任意命令"&gt;场景分析：利用 SUID 执行任意命令&lt;/h3&gt;&#10;&lt;p&gt;攻击者可以寻找具备 SUID 权限的、允许执行系统命令的程序。&#10;例如，若程序调用了未定义完整路径的 &lt;code&gt;system()&lt;/code&gt; 函数，攻击者可通过修改 &lt;code&gt;PATH&lt;/code&gt; 环境变量，让该程序执行恶意的同名可执行文件，从而获得 root 权限。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 检查系统中所有具备 SUID 权限的文件&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;find / -perm -4000 -type f 2&amp;gt;/dev/null&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#10;&lt;h2 id="生产环境的防御建议"&gt;生产环境的防御建议&lt;/h2&gt;&#10;&lt;p&gt;对于构建 Agent 系统的工程师，如何通过权限设计防范此类风险？&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;最小权限原则 (PoLP)&lt;/strong&gt;：&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;限制 SUID&lt;/strong&gt;：定期扫描系统中不必要的 SUID 文件。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;容器化隔离&lt;/strong&gt;：将 Agent 运行在受限的 Docker 容器中，利用 Namespace 和 cgroups 进行内核级隔离，即便 Agent 被攻破，其权限也仅限于容器内部。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;可观测性增强&lt;/strong&gt;：&#10;&lt;ul&gt;&#10;&lt;li&gt;在敏感目录（如 &lt;code&gt;/etc&lt;/code&gt;, &lt;code&gt;/usr/bin&lt;/code&gt;）部署 &lt;code&gt;auditd&lt;/code&gt; 监控，一旦出现异常的 &lt;code&gt;chmod&lt;/code&gt; 或 &lt;code&gt;chown&lt;/code&gt; 操作立即触发告警。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;防范脚本注入&lt;/strong&gt;：&#10;&lt;ul&gt;&#10;&lt;li&gt;在代码层面，永远不要直接执行不可信的 shell 字符串，使用结构化的 API 调用。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="总结"&gt;总结&lt;/h2&gt;&#10;&lt;p&gt;权限控制是 Linux 内核安全的第一道防线。作为部署工程师，理解这些特权位的生效机制，不仅能帮助我们更优雅地进行系统运维，更能建立起防御漏洞利用的体系化思维。&lt;/p&gt;</description></item></channel></rss>