当binary没有read属性时,process_vm_readv返回EPERM

时间:2017-01-23 18:35:08

标签: linux system-calls

我有两个简单的测试程序:

  • 第一个程序分配缓冲区并进入无限循环
  • 第二个程序正在使用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从其他进程访问?我发现内存页面的权限没有区别,所以我想知道它是如何工作的。

0 个答案:

没有答案