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
グループメンバーシップ(デバイスを開くことができるように)とバイナリ機能が必要です。