我想在不使用 sudo 的情况下读取某些进程的内存映射(/proc/PID/maps)。这是微不足道的,除非该过程有能力。明白了吗:
如果我运行:
$ bash
$ cat /proc/$$/maps
这有效,我得到了输出!
但如果我跑:
sudo setcap "cap_net_raw+p" /bin/bash
并再次尝试测试用例:
$ bash
$ cat /proc/$$/maps
我得到:
cat: /proc/1151842/maps: Permission denied
我希望这是可以理解的。
感谢您的帮助
答案1
/proc/ 中文件的所有权由 Linux 内核中的“dumpable”标志控制,该标志用于防止将信息从特权进程泄漏给非特权用户。
当进程获得功能时,它会升级为特权进程,并且 /proc/ 现在由 root 拥有。