ルートとして他のプロセスが所有するファイルハンドルを見つけることはできますか?

ルートとして他のプロセスが所有するファイルハンドルを見つけることはできますか?

Cでファイルハンドルを使用して検索する方法があります。

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

fdinfoファイル記述子ごとに1つのファイルもあります。

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

おすすめ記事