我处在一个困难的境地,我不知道一个进程需要什么样的 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/