open / dev / mem - 不允许操作

时间:2014-03-13 05:24:13

标签: c linux memory-management

我正在研究ubuntu。

我正在尝试打开/dev/mem,我正在permission denied

int32_t open_memdev()
{
        int32_t fd;

        fd = open("/dev/mem", O_RDONLY);
        if (fd < 0) {
                printf("Failed to open /dev/mem : %s\n", strerror(errno));
                return-EINVAL;
        }

        return fd;
}

此代码始终打印"Failed to open /dev/mem : Operation not permitted"

我在SO

上搜索了这个
  1. access-permissions-of-dev-mem

  2. accessing-mmaped-dev-mem

  3. 这些q似乎讨论了无法访问超过1 MB的问题,但我的问题是我甚至无法打开一次。

    如果有帮助,请添加详细信息:

    1)我检查了我的配置是否启用了CONFIG_STRICT_DEVMEM。

    2) ls -l /dev/mem
    crw-r----- 1 root kmem 1, 1 2014-03-13 13:57 /dev/mem
    

    如果需要其他信息,请与我们联系。

1 个答案:

答案 0 :(得分:10)

如果您不是 root ,则无法阅读/dev/mem

普通应用程序没有理由访问/dev/mem,即物理 RAM,因为应用程序在虚拟内存中运行!< / SUP>

如果您更改/dev/mem的权限以启用(您不应该),则会在系统中打开一个巨大的安全漏洞。只有受信任的根进程才能访问/dev/mem。见mem(4)

(如果需要,您可以使用setuid技术,或使用sudo运行您的程序

如果您需要访问其他virtual memoryaddress space中的process,请考虑proc(5),例如: {1}用于pid 1234的处理。