Ekaterina Asked: 2022-04-27 13:04:21 +0800 CST2022-04-27 13:04:21 +0800 CST 2022-04-27 13:04:21 +0800 CST 可以将两组不同的功能设置为一个文件吗? 772 我想为我的文件的允许和继承集设置不同的功能。像这样的东西: sudo setcap cap_fsetid=ei mybinary sudo setcap cap_kill=ep mybinary 但是,后一个命令会覆盖前一个命令。甚至有可能以这种方式管理能力吗? linux posix 1 个回答 Voted Best Answer Marcus Müller 2022-04-27T13:32:29+08:002022-04-27T13:32:29+08:00 您可以使用getcap来获取当前设置的功能列表。由于这些是空格分隔的,您可以添加更多这样的内容: sudo setcap first_capability=itsvalue executable_fname sudo setcap "$(getcap executable_fname) newcap=value" executable_fname (以空格分隔的功能列表:如 中man setcap所述,在 中描述man cap_from_text) 警告:在设置之前进行查询对于竞争条件是不安全的——确保没有其他进程同时设置功能。 如果您了解任何给定时间点的所有功能,则更容易: sudo setcap "first_capability=itsvalue newcap=value" executable_fname 在这种情况下,+可以=用来提高能力。在此处使用=更易于阅读,但在某些极端情况下,+可以更可预测地构建状态。特别是列出的两个不同分配的能力有一个共同的子集。例如这两个是不等价的: $ sudo setcap "first=i second=p first,second=e" executable $ sudo setcap "first=i second=p first,second+e" executable 其中第二个相当于: $ sudo setcap "first=ie second=pe" executable
您可以使用
getcap
来获取当前设置的功能列表。由于这些是空格分隔的,您可以添加更多这样的内容:(以空格分隔的功能列表:如 中
man setcap
所述,在 中描述man cap_from_text
)警告:在设置之前进行查询对于竞争条件是不安全的——确保没有其他进程同时设置功能。
如果您了解任何给定时间点的所有功能,则更容易:
在这种情况下,
+
可以=
用来提高能力。在此处使用=
更易于阅读,但在某些极端情况下,+
可以更可预测地构建状态。特别是列出的两个不同分配的能力有一个共同的子集。例如这两个是不等价的:其中第二个相当于: