读取 /proc/<pid>/fd/<fd> 没有完全的 root 权限
Read /proc/<pid>/fd/<fd> without full root access
我有一个程序 (https://github.com/raboof/connbeat) 依赖 /proc/[pid]/fd/*
找到给定(网络)inode 的进程。
/proc/[pid]/fd
只能被root读取,但是为了安全我想尽可能的降低权限。
有没有什么方法可以(有效地)在不需要完全 root 权限的情况下了解进程和 inode 之间的关系?也许我可以有选择地授予使用功能的某些系统调用?
为了能够读取您需要的所有进程的 fd:
- CAP_DAC_READ_SEARCH - 用于访问 /proc/[pid]/fd
- CAP_SYS_PTRACE - 读取 /proc/[pid]/fd/*
下的符号链接
您可以将您的程序限制为只有这两个功能。然后,您可以使用 readdir()
或 readlink()
等普通 API 调用或您喜欢的任何其他方式访问相关信息。
有关这两个功能的更广泛描述,请参阅 capabilities(7)
我有一个程序 (https://github.com/raboof/connbeat) 依赖 /proc/[pid]/fd/*
找到给定(网络)inode 的进程。
/proc/[pid]/fd
只能被root读取,但是为了安全我想尽可能的降低权限。
有没有什么方法可以(有效地)在不需要完全 root 权限的情况下了解进程和 inode 之间的关系?也许我可以有选择地授予使用功能的某些系统调用?
为了能够读取您需要的所有进程的 fd:
- CAP_DAC_READ_SEARCH - 用于访问 /proc/[pid]/fd
- CAP_SYS_PTRACE - 读取 /proc/[pid]/fd/* 下的符号链接
您可以将您的程序限制为只有这两个功能。然后,您可以使用 readdir()
或 readlink()
等普通 API 调用或您喜欢的任何其他方式访问相关信息。
有关这两个功能的更广泛描述,请参阅 capabilities(7)