루트로서 다른 프로세스가 소유한 파일 핸들을 찾을 수 있습니까?

루트로서 다른 프로세스가 소유한 파일 핸들을 찾을 수 있습니까?

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

관련 정보