capsh --print 实际上做了什么?

capsh --print 实际上做了什么?

据我所知,Linux 功能是在进程/文件上定义的。但是当我执行 capsh --print 时,它会告诉我用户的功能。

那么 capsh --print 到底在做什么?能力只定义在流程上,而不定义在用户上?

答案1

capsh是一个用于探索如何使用和验证功能和 APIlibcap提供的工具。你可以用它来调试当发生什么各种各样的问题。

的一个重要属性capsh是它严格按照从左到右的顺序评估其参数。因此,当您试图弄清楚为什么某些事情没有达到您想要的状态时,您可以插入一个--print参数来弄清楚:--print只输出正在执行的进程的当前状态capsh

您应该将其视为一种与功能相关的功能的瑞士军刀。构建libcap树将其用于quicktest.sh验证该库仍然适用于现代内核等。该脚本包含一大堆工作示例以及使用libcap内核功能的预期结果。

这包括环境功能以及非标准内核操作模式(又名libcap 模式)。

例如,由于内核的工作方式,这两个序列会产生不同的结果:

$ sudo capsh --iab=^cap_dac_override --user=$(whoami) --print
$ sudo capsh --user=$(whoami) --iab=^cap_dac_override --print

您可以自动回答以下问题这是否提高了环境位像这样的东西:

$ sudo capsh --user=$(whoami) --iab=^cap_dac_override --has-a=cap_dac_override && echo yes

另外,如果你想探索世界POSIX.1e草案委员会想象,你可以尝试这样的事情:

$ sudo capsh --mode=PURE1E --user=$(whoami) --

答案2

简单的。这不是用户的能力。这是它自身的能力。所以它从父母那里继承的东西。

我记得(几年前)我们正在讨论capsh,我们试图弄清楚它的用途。我们认为它几乎毫无用处,讨论导致了环境功能(继承和有效)的发明。capsh自从环境功能存在以来我就没有尝试过。仅当创建一系列sudo功能(例如)时才需要它们capsh。或者有时是更专业的包装。

相关内容