open/dev/mem - 不允许操作

mk.*_*k.. 4 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;
}
Run Code Online (Sandbox Code Playgroud)

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

我在SO上搜索过这个

  1. 访问权限-的-DEV-MEM

  2. 访问-mmaped-DEV-MEM

这些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
Run Code Online (Sandbox Code Playgroud)

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

Bas*_*tch 10

/dev/mem如果你不是root,你就无法阅读.

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

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

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

如果您需要访问某些其他进程地址空间中虚拟内存,请考虑proc(5),例如pid 1234的进程./proc/1234/mem

  • 由于某种原因,即使作为 root,我仍然无法打开它。 (3认同)