如何获取 Linux 功能列表

如何获取 Linux 功能列表

我需要获取执行程序的 Linux 版本可用的功能列表。只是为了让用户可以选择授予文件什么功能。有没有机会使用一些标准库来做到这一点?我设法做到这一点的唯一方法是查看 的边界集cash --print,但是

  1. 为什么它显示...,cap_audit_read,38,39,而/usr/include/linux/capability.h说那CAP_LAST_CAPCAP_AUDIT_READ(37)
  2. 如果可能的话,我真的会使用一些功能描述

答案1

以下一项或多项。

命令行:

$ /sbin/capsh --decode=$(grep CapBnd /proc/1/status|cut -f2)

代码( list.c)中:

#include <stdio.h>
#include <sys/capability.h>

int main(int argc, char **argv) {
  for (cap_value_t c = 0; c < cap_max_bits(); c++) {
    char *name = cap_to_name(c);
    printf("%s\n", name);
    cap_free(name);
  }
}

编译如下:

$ gcc -o list list.c -lcap

最近的版本capsh包含了这个capsh --explain=论点。例如,

$ /sbin/capsh --explain=cap_chown
cap_chown (0) [/proc/self/status:CapXXX: 0x0000000000000001]

    Allows a process to arbitrarily change the user and
    group ownership of a file.

相关内容