Você pode procurar um filehandle pertencente a outro processo como root?

0

Existe um método para procurar com um filehandle em C,

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

Existe também um arquivo em fdinfo para cada descritor de arquivo,

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

O que eu quero fazer é chamar fseek em um identificador de arquivo pertencente a outro processo. Isso é possível atualmente?

    
por Evan Carroll 25.01.2018 / 06:10

1 resposta

0

Eu estou supondo "não", mas sinto que me corrija.

Aqui eu crio um arquivo de teste ( /tmp/f ), e um script perl que echosce seu pid, abre nosso arquivo de teste e dorme.

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

O pid emitido foi 19992 . Agora aqui está o que está acontecendo em /proc/19992/fd ,

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

e em /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
    
por 25.01.2018 / 09:43