您可以以 root 身份寻求另一个进程拥有的文件句柄吗?

您可以以 root 身份寻求另一个进程拥有的文件句柄吗?

C 中有一种使用文件句柄进行查找的方法,

int fseek(FILE *stream, long offset, int whence);

fdinfo每个文件描述符还有一个文件,

cat /proc/self/fdinfo/2
pos:    0
flags:  0100002
mnt_id: 24

我想要做的是调用fseek属于另一个进程的文件句柄。目前这可能吗?

答案1

我猜“不”,但请纠正我。

在这里,我创建一个测试文件 ( /tmp/f) 和一个回显其 pid 的 Perl 脚本,打开我们的测试文件并休眠。

echo foobar > /tmp/f;
perl -E'$|=1; print $$; open my $fh, "<", "/tmp/f" or die $!; sleep while 1'

输出的pid是19992.现在这是正在发生的事情/proc/19992/fd

$ cd /proc/19992/fd/
$ sudo cat 3
foobar

并且在/proc/19992/fdinfo

$ cat 3 
pos:    0
flags:  02100000
mnt_id: 27

$ sudo cat 3  > 3
bash: 3: Permission denied

$ sudo echo "pos=0"  > 3
bash: 3: Permission denied

相关内容