我有两个简单的测试程序:
process_vm_readv
来读取缓冲区的内容 在我从第一个二进制文件中删除read属性之前,它工作正常。我正在做类似的事情:
$ chmod -r prog1
$ ./prog1 &
pid=19382 buf_addr=0xbfaef000
$ ./prog2 $(pidof prog1) buf_addr
errno=EPERM /* Operation not permitted */
它在RHEL 7.2和标准用户帐户上测试过(root帐户没问题)。
为什么/如何chmod -r
在一个二进制文件上使其进程内存无法通过process_vm_readv
从其他进程访问?我发现内存页面的权限没有区别,所以我想知道它是如何工作的。