- 文档
- 教程
- 知识库
【免费下载链接】tldr
Collaborative cheatsheets for console commands 📚.
getcap是 Linux 系统上用于查看文件能力(capabilities)的命令行工具,它会逐一输出指定文件的名称及其所绑定的能力集合。在 tldr 协作速查表仓库中,该命令的规范页面存放于 pages/linux/getcap.md,而阿拉伯语翻译版则位于 pages.ar/linux/getcap.md。本文以这份阿拉伯语页面为核心骨架,结合仓库中与之配套的setcap页面、翻译模板与样式规范,深入讲解getcap的三种典型用法、-r/-v参数语义,以及它在 tldr 仓库中的页面组织与翻译约定。读完本文,你将能熟练用getcap排查文件的能力绑定情况,并理解该速查表页面在跨语言仓库中的写作与校验规范。
getcap 是什么:Linux 文件能力查看命令
在 Linux 安全模型中,capabilities机制把传统root超级权限拆分为一系列细粒度的能力位(如cap_net_raw允许使用 RAW 与 PACKET 套接字、cap_net_admin允许执行网络管理操作等)。系统管理员可以通过setcap把某个能力集合绑定到可执行文件上,从而让普通用户运行的进程仅获得完成特定任务所需的最小权限,避免使用setuid带来的全面提权风险。
getcap就是这套机制中的"读取端"工具:它负责显示每个指定文件的名称及其已绑定的能力集合,是setcap写入操作的对称验证手段。在 tldr 仓库中,getcap与setcap被刻意放在同一目录下并互相引用——pages/linux/setcap.md 的首行描述即为 "Set capabilities of specified file",并明确标注 "See also:getcap"。
由于该命令仅在 Linux 上存在,tldr 仓库把它放在平台相关目录pages/linux/(而非通用的pages/common/)下,阿拉伯语版本对应放在pages.ar/linux/。这种"按平台分目录"的组织方式在样式指南中有明确约定:当命令在不同操作系统上存在差异时,客户端会优先展示最匹配当前平台的页面。
原页面三种核心用法逐一拆解
tldr 页面遵循"描述 + 示例命令"的极简模板,阿拉伯语版getcap页面共收录了三种用法,英文规范版 pages/linux/getcap.md 与之完全对应。下面逐一解读并给出可直接运行的实战形式。
1. 查看指定文件的能力
页面原文:getcap {{path/to/file1 path/to/file2 ...}}
这是最基本的形式:把要检查的一个或多个文件路径作为参数传入,getcap会输出每个文件及其绑定的能力集合。例如:
getcap /usr/bin/ping /usr/bin/traceroute在 tldr 语法中,{{path/to/file}}表示需要由用户替换的占位符。注意阿拉伯语页面保留了英文占位符原样,这是翻译模板中的一项硬性约定,具体原因见后文"阿拉伯语页面翻译规范"一节。
2. 递归查看目录下所有文件的能力
页面原文:getcap -r {{path/to/directory1 path/to/directory2 ...}}
-r(recursive)选项让getcap递归遍历指定目录,把目录树下所有文件的名称与能力一并列出。当需要审计某个软件目录(如/opt、/usr/local/bin)中哪些可执行文件被附加了特权能力时,这是最常用的形式:
getcap -r /usr/local/bin3. 显示所有被搜索的条目,即使未设置任何能力
页面原文:getcap -v {{path/to/file1 path/to/file2 ...}}
默认情况下,getcap只输出"确实绑定了能力"的文件条目;对于没有能力设置的文件,它通常会保持沉默。-v(verbose)选项则强制显示所有被搜索的条目,即使文件上没有任何能力设置也会被列出,从而给出完整的"搜索覆盖率"反馈:
getcap -v /usr/bin/ping /usr/bin/sshd这在脚本自动化校验中尤其有价值:管理员可以用-v确认"某个文件当前不携带任何能力",再配合setcap的写入操作形成闭环。
组合用法:递归 + 详细输出
把两个选项叠加使用,可以审计一个目录树并同时看到"有能力"与"无能力"的全部文件,用于核对哪些文件意外获得了特权、哪些文件的预期能力尚未写入:
getcap -r -v /usr/bin参数语义与底层机制
-r:递归遍历
从功能上看,-r让getcap从"精确查询指定文件"切换到"整棵目录树的扫描"。这意味着它不仅会检查参数给定的目录本身,还会深入其所有子目录。结合 Linux 文件系统把能力存放在扩展属性security.capability上的设计,可以推断出-r的底层实现本质上是对目标目录树逐文件读取该扩展属性并格式化输出的过程。
-v:详细模式
-v的作用是改变输出策略:从"仅报告有能力的条目"变为"报告所有搜索过的条目"。在实际排查中,-v最典型的用途是配合-r一次性摸清目录内所有文件的 capabilities 绑定现状——无论是"已绑定"还是"未绑定"都一目了然,避免因默认静默行为而误判"没输出 = 目录安全"。
与扩展属性security.capability的关系
文件能力并非存放在常规文件内容或元数据(如权限位)中,而是作为扩展属性security.capability持久化的。setcap负责写入该属性,getcap负责读取并解析它。这正是为什么"查看"必须与"设置"成对出现:没有getcap,setcap写入的结果将难以快速、直观地验证。
与 setcap 配合的完整实操工作流
要真正用好getcap,需要把它和写入端setcap放在一起理解。仓库的 pages/linux/setcap.md(及阿拉伯语版 pages.ar/linux/setcap.md)收录了完整的写入示例,与其配套即可形成"设置 → 验证 → 审计"的标准工作流:
1. 给文件绑定能力:例如为可执行文件赋予cap_net_raw(用于 RAW 与 PACKET 套接字):
setcap 'cap_net_raw' /path/to/file也可以一次绑定多个能力,+ep后缀表示"effective permitted"(有效且允许):
setcap 'cap_dac_read_search,cap_sys_tty_config+ep' /path/to/file2. 用 getcap 验证写入结果:写入后立即用getcap查看确认,这是 setcap 页中-v选项(setcap -v校验指定能力是否与文件关联)之外的另一种验证途径:
getcap /path/to/file3. 移除并复核:需要回收特权时,先用setcap -r移除全部能力,再用getcap -v复核确认条目已清空:
setcap -r /path/to/file getcap -v /path/to/file4. 命名空间限定:setcap 页还展示了-n {{root_uid}}选项,可将能力限定在特定 root 用户 ID 所属的用户命名空间内使用。对应的getcap侧(libcap 工具集同样支持命名空间相关选项)可用于审计这类精细化配置,不过速查表页面本身仅收录了-r与-v两个高频选项,遵循"每页最多 8 条示例"的克制原则。
阿拉伯语页面:翻译规范与占位符约定
getcap的阿拉伯语页面不是随意翻译的产物,它严格遵循仓库的翻译工程规范,这些规则都有对应的模板文档作为依据:
占位符保持英文,避免 RTL 阅读错乱
在 contributing-guides/translation-templates/common-arguments.md 的顶部有一条醒目的 NOTE:阿拉伯语(ar)和波斯语(fa)页面中的占位符不应被翻译,以防阅读时文本翻转错乱。这是因为阿拉伯语是自右向左(RTL)书写的语言,把path/to/file这类路径占位符翻译成本地文字后,混排显示容易出现视觉倒序问题。查看表格可以看到,ar一行的所有占位符(path/to/file、path/to/directory等)确实与英文列完全一致——这正是 pages.ar/linux/getcap.md 中{{path/to/file1 path/to/file2 ...}}保持英文原样的原因。
页面布局模板
按照 contributing-guides/style-guide.md 的规定,每个页面遵循统一模板:# 命令名作为 H1,随后是> 描述(一行或两行)+> 更多信息: <链接>的引言块,再逐个以"- 描述:"与反引号包裹的命令行组成示例列表,且最多不超过 8 条示例。getcap页面正是这一模板的标准产物:3 条示例、1 行描述、文件名与命令名完全一致。
标题与文件名一致性
样式指南还强调:页面文件名必须与命令名完全一致(Markdown 文件名要求小写)。因此getcap页面被保存为getcap.md,而不是getcap-command.md或其他变体,这保证了客户端能根据用户输入的命令名精确命中对应页面。
描述用语的翻译风格
在 contributing-guides/translation-templates/common-descriptions.md 中,可以看到常见描述的跨语言对照表(如"显示帮助"在阿拉伯语中为"عرض المساعدة"、"显示版本"为"عرض الإصدار")。getcap页面的描述 "أمر لعرض اسم وصلاحيات كل ملف محدد"(意为"用于显示每个指定文件的名称与能力的命令")采用了与之一致的简洁直陈风格,体现了 tldr 页面"短小、精悍、可直接照抄"的写作哲学。
仓库工程保障:格式如何被自动校验
tldr 仓库对页面格式有自动化校验机制。样式指南中介绍了 linter 的使用方式:
npm install --global tldr-lint tldr-lint path/to/tldr_page.md仓库的 scripts/test-tldr-lint.sh 与 scripts/test.sh 会在 CI 阶段对全部页面(包括pages.ar/下的阿拉伯语页面)运行这类检查,确保每个页面符合模板、占位符与描述规范。这意味着getcap阿拉伯语页面之所以"简洁到只有三个示例",并非内容缺漏,而是在"信息密度优先 + 最多 8 条示例 + 自动化 lint 强制约束"三重规则下刻意为之的产物——速查表本就不追求穷尽getcap的全部选项,而是提炼出最高频、最能解决实际问题的用法。
小结
getcap是 Linux capabilities 权限模型中的"查看端",与写入端setcap构成完整的审计闭环。本文基于 tldr 仓库的阿拉伯语页面 pages.ar/linux/getcap.md,完整覆盖了页面收录的三种核心用法(指定文件查询、-r递归扫描、-v显示全部条目),并结合 pages/linux/setcap.md 给出了"设置 → 验证 → 移除 → 复核"的端到端工作流。同时,通过对翻译模板与样式指南的对照,阐明了阿拉伯语页面保留英文占位符的 RTL 阅读原因、页面模板与文件名一致性要求,以及 lint 脚本对页面质量的工程化保障。无论你是要在生产服务器上排查可疑的特权文件,还是想为 tldr 仓库贡献新的多语言页面,这份速查表及其背后的规范都是可直接落地的参考。
- 文档
- 教程
- 知识库
【免费下载链接】tldr
Collaborative cheatsheets for console commands 📚.
相关推荐
`head` 命令速查页深度解析:以 tldr 仓库阿拉伯语页面 pages.ar/linux/head.md 为例
head 命令速查页深度解析:以 tldr 仓库阿拉伯语页面 pages.ar/linux/head.md 为例 本文以 tldr 仓库中的阿拉伯语 head
文档教程知识库linux-command 手册精读:getcap 命令详解与 Linux 文件能力(capabilities)权限机制实战
linux command 手册精读:getcap 命令详解与 Linux 文件能力(capabilities)权限机制实战 本篇技术指南围绕 Linux 命令
文档教程host 命令 DNS 查询速查指南:深入解读 tldr-pages 阿拉伯语版 host 速查页
host 命令 DNS 查询速查指南:深入解读 tldr pages 阿拉伯语版 host 速查页 本文以 tldr pages 仓库中的阿拉伯语速查页 pag
文档教程知识库
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考