在 Linux 中,每个进程都有自己的文件描述符表,该表保存对所有打开的文件和类文件设备的引用。该表由内核管理。
非特权用户是否有可能修改提升进程的文件描述符表中的文件描述符,以便文件描述符指向另一个文件?
一个实际的例子
进程 1000 运行root
并从 FD 0 ( ) 连续读取stdin
到 FD 1 ( stdout
)。进程 1001 运行eve
并希望修改 PID 1000 的文件描述符表,以便 FD 1 指向/etc/sudoers
。
这可能吗?
在 Linux 中,每个进程都有自己的文件描述符表,该表保存对所有打开的文件和类文件设备的引用。该表由内核管理。
非特权用户是否有可能修改提升进程的文件描述符表中的文件描述符,以便文件描述符指向另一个文件?
进程 1000 运行root
并从 FD 0 ( ) 连续读取stdin
到 FD 1 ( stdout
)。进程 1001 运行eve
并希望修改 PID 1000 的文件描述符表,以便 FD 1 指向/etc/sudoers
。
这可能吗?
一旦该过程开始,这是不可能的。如前所述,这样做的唯一方法是通过重定向,但是这发生在 bash 内部(正如您在评论中指出的那样)而不是在进程内部,因此不适合作为您问题的解决方案。