file-permissions - 从用户空间 : operation not permitted 读取/dev/cpu/*/msr

标签 file-permissions user-permissions msr

我正在尝试编写一个可以读取 msr 寄存器的简单应用程序,并且正在从用户空间运行该应用程序。

我已经加载了 msr 模块,并为每个人授予了/dev/cpu/*/msr 的读取权限。但是用户仍然无法访问这些文件,但 root 可以。

权限如下所示:

crw-r--r-- 1 root root 202, 0 sep  6 17:55 /dev/cpu/0/msr

crw-r--r-- 1 root root 202, 1 sep  6 17:55 /dev/cpu/1/msr

crw-r--r-- 1 root root 202, 2 sep  6 17:55 /dev/cpu/2/msr

crw-r--r-- 1 root root 202, 3 sep  6 17:55 /dev/cpu/3/msr

当我尝试从用户空间读取这些文件时,我不断收到“不允许操作”错误消息,但当 root 尝试访问它们时工作正常。我究竟做错了什么?我在内核版本为 3.11.0 的 Ubuntu 13.04 上。

最佳答案

自 3.7 以来,主线 Linux 内核中的更改现在需要可执行文件具有 CAP_SYS_RAWIO 功能来打开 MSR 设备文件 [2]。除了加载 MSR 内核模块并在 msr 设备文件上设置适当的文件权限外,还必须使用以下命令将 CAP_SYS_RAWIO 功能授予需要访问 MSR 驱动程序的任何用户可执行文件:

sudo setcap cap_sys_rawio=ep <user_executable>

关于file-permissions - 从用户空间 : operation not permitted 读取/dev/cpu/*/msr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18661976/

相关文章:

x86 - 读取当前非核心频率并设置非核心倍频器

c - 如何从 EFI 棒更改 msr 0x199?

php - Cakephp cake_core_ 缓存无法写入 'cake_dev_en-us'

linux - mkdir() 怎么会成功却设置了错误的权限呢?

javascript - 如何检测浏览器询问用户设备权限?

c# - 如何在 SharePoint 2010 中获取服务应用程序权限

unix - 如何在远程服务器上进行 hg clone 后设置权限?

linux - Nginx 无法在 755 权限文件夹中创建文件

svn - 如何在 svn 存储库中设置权限?

intel - Haswell 微架构在性能中没有停滞周期后端