10

msr レジスタを読み取ることができる単純なアプリケーションを作成しようとしており、このアプリケーションをユーザー空間から実行しています。

msr モジュールをロードし、すべてのユーザーに /dev/cpu/*/msr への読み取りアクセス許可を付与しました。ただし、ユーザーはこれらのファイルにアクセスできませんが、ルートはアクセスできます。

権限は次のようになります。

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を使用しています。

4

3 に答える 3

11

3.7 前後以降のメインライン Linux カーネルの変更により、実行可能ファイルに MSR デバイス ファイルを開く機能 CAP_SYS_RAWIO が必要になりました [2]。MSR カーネル モジュールをロードし、msr デバイス ファイルに適切なファイル アクセス許可を設定するだけでなく、次のコマンドを使用して、MSR ドライバーにアクセスする必要があるすべてのユーザー実行可能ファイルに CAP_SYS_RAWIO 機能を付与する必要があります。

sudo setcap cap_sys_rawio=ep <user_executable>
于 2013-09-19T20:02:45.183 に答える