在可执行文件上取消设置 `setcap` 附加功能

use*_*160 18 linux capabilities

一个答案Linux的:允许用户收听低于1024的端口指定给使用一个可执行附加的权限setcap,使得程序可以结合端口<1024:

setcap 'cap_net_bind_service=+ep' /path/to/program
Run Code Online (Sandbox Code Playgroud)

撤消这些权限的正确方法是什么?

Ste*_*ris 22

要从文件中删除功能,请使用该-r标志

setcap -r /path/to/program
Run Code Online (Sandbox Code Playgroud)

这将导致程序没有能力。

  • @dotnetCarpenter 使用 `getcap` (4认同)

小智 14

@stephen-harris 发布的内容是正确的。但我相信它会一次性删除添加到程序中的所有功能。要删除特定功能,请执行以下操作(按照问题中的示例)

setcap 'cap_net_bind_service=-ep' /path/to/program,

注意“-”号。您可以通过可执行文件验证 {effect of the commands} 功能,如下所示:

getcap /path/to/program
Run Code Online (Sandbox Code Playgroud)

在 setcap -r 的情况下,所有功能都将消失,getcap 的结果将为空,因为“-ep”只是删除了您用“+ep”添加的内容。当您提供多个功能并希望有选择地删除它们时,它会派上用场。