Why can't I read /proc/pid/mem when I have read permission?

Viewed 1105

I would like to read the content of the memory file associated to one of my process (with PID 2614). I started to write a very small C program to check I can open it:

#include <stdio.h>
#include <errno.h>

int main() {
    FILE* f = fopen("/proc/2614/mem", "rb");
    if(!f) {
        printf("Error %d\n", errno);
        return -1;
    }

    fclose(f);

    return 0;
}

When I run it I get a permission denied error:

$ gcc -o read read.c && ./read
Error 13

However, I have read permission:

$ whoami
pierre
$ ll /proc/2614/mem
-rw------- 1 pierre pierre 0 août  18 19:44 /proc/2614/mem

What's going on?

I know it is possible to read the file because I am able to do it on another system (and some other SO answers already did that). Here is information about my system:

$ uname -a
Linux pierre-computer 4.15.0-112-generic #113~16.04.1-Ubuntu SMP Fri Jul 10 04:37:08 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

And the information for the system on which I can read it:

$ uname -a
Linux not-pierre-computer 3.2.0-4-686-pae #1 SMP Debian 3.2.89-2 i686 GNU/Linux

Are there restrictions on some systems?

0 Answers
Related