kmem グループのメンバーが /dev/mem へのルートではなく読み取りアクセスに失敗しました。

kmem グループのメンバーが /dev/mem へのルートではなく読み取りアクセスに失敗しました。

root以外のユーザーとして使用しようとしています/dev/mem。次の権限を確認してください/dev/mem

~/w/e/setup ❯❯❯ ls -lha /dev/ | grep mem
crw-r-----   1 root kmem        1,     1 Oct 15 09:29 mem

kmem私が理解したように、グループメンバーは以下を読むことができるはずです/dev/mem

~/w/e/setup ❯❯❯ groups
docker users video uucp kmem wheel autologin

現在、ユーザーはこのグループのメンバーであるため、kmemこのグループから内容を読み取ろうとしています/dev/mem

~/w/e/setup ❯❯❯ head /dev/mem | hexdump -C
head: cannot open '/dev/mem' for reading: Operation not permitted

驚いたことに、手術は許可されていません。 rootとしてログインすると、同じことができます。

/dev/mem誰かがグループのメンバーとして文章を読むことができない理由を説明できますかkmem/dev/mem特定のユーザーに対してrootではなく読み取り専用アクセスを有効にする方法は?

答え1

/dev/memのみ開くことができますコースを通してCAP_SYS_RAWIO; head、rootとして実行されず、この機能はありません。以下を使用してこの問題を「修正」することができますsetcap(ただし、バイナリコピーでのみこれを実行してください...)。

cp /usr/bin/head .
sudo setcap cap_sys_rawio+ep head
./head /dev/mem | hexdump -C

したがって、特定のユーザーへのアクセスを有効にするには、/dev/memグループメンバーシップ(デバイスを開くことができるように)とバイナリ機能が必要です。

関連情報