linux - 如何找出一个进程需要哪些 linux 功能才能工作?

标签 linux debugging linux-kernel linux-capabilities

我处在一个困难的境地,我不知道一个进程需要什么样的 linux 功能才能工作。 找出所需上限的最佳方法或任何方法是什么?

我现在唯一能想到的就是使用 capsh 并删除进程的所有大写字母。然后该过程失败,我开始添加上限(通过删除 --drop=CAP_XZY)直到它起作用。

有更好的建议吗?

最佳答案

基于最近的 libcap2 更新

1:(短选项):getpcaps

描述:

来自 here :

getpcaps displays the capabilities on the processes indicated by the pid value(s) given on the command line.

示例:

$ getpcaps <PID>
PID: = cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap+i

2:(有点长的选项):/proc status and capsh

描述:

proc是一个进程信息伪文件系统,换句话说 - 一个目录,您可以在其中查看所有进程的信息。

关于capsh :

Linux capability support and use can be explored and constrained with this tool. This tool provides a handy wrapper for certain types of capability testing and environment creation.
It also provides some debugging features useful for summarizing capability state.

示例:

$ cat /proc/<PID>/status | grep Cap

你会得到(在大多数系统上):

CapInh: 00000000a80425fb (Inherited capabilities)
CapPrm: 0000000000000000 (Permitted capabilities)
CapEff: 0000000000000000 (Effective capabilities)
CapBnd: 00000000a80425fb (Bounding set)
CapAmb: 000000000000000  (Ambient capabilities set)

使用 capsh 实用程序将十六进制数解码为功能名称:

capsh --decode=00000000a80425fb
0x00000000a80425fb=cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap

(*) 您可以使用以下命令下载 capsh:sudo apt-get install git libpcap-dev

关于linux - 如何找出一个进程需要哪些 linux 功能才能工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35469038/

相关文章:

linux - Bash:如何遍历目录结构并执行命令?

mysql - 用于 Linux 的类似于 SQLYog 的 MySQL GUI?

javascript - 无法使用行号时如何查找错误位置

java - 将命令行参数记录到 log4j 中

c - 如何获取网络设备统计信息?

linux - 我在哪里可以获得 x86 的 32 位 Linux 内核源代码

php - 通过 PHP 运行 bash 命令,更改目录然后执行二进制文件

linux - 为什么将文件系统类型从 XFS 更改为 JFS 会提高 mmap 文件写入性能?

javascript - 如何在firefox/chrome中通过调试器跟踪定义脚本的js文件?

debugging - 使用 Electron 伪造时在 Electron 应用程序中调试主要过程