![/proc/ 的权限策略是什么/环境?](https://linux22.com/image/1431177/%2Fproc%2F%20%E7%9A%84%E6%9D%83%E9%99%90%E7%AD%96%E7%95%A5%E6%98%AF%E4%BB%80%E4%B9%88%2F%E7%8E%AF%E5%A2%83%EF%BC%9F.png)
我看到,通常的用户进程获得了用户可读的权限:
-r-------- 1 1000 1000 0 Nov 19 13:51 /proc/9083/environ
但例如 SCREEN 守护进程获得root
所有权:
-r-------- 1 root root 0 Nov 19 13:47 /proc/9167/environ
不过,9167 也是用户 UID:
# ps axnu|grep 9167
1000 9167 0.0 0.0 23488 2008 ? Ss 13:47 0:00 SCREEN
答案1
在大多数系统上,/usr/bin/screen
安装时设置用户标识位代表 root,这意味着它将首先以有效 UID 0 启动,然后才放弃权限(返回到您的正常 UID)。
(这用于实现“会话共享”功能,因为否则您的屏幕将不被允许连接到其他用户的屏幕插座。)
但是,由于特权进程可能会将敏感信息保存在内存中,因此内核为它们提供了特殊保护 - 即使它们放弃所有特权并切换到您的 UID,您仍然无法向它们发送信号、附加调试器或创建核心转储。
“无核心转储”选项(也称为fs.suid_dumpable
sysctl 设置)会导致 Screen 的/proc
文件永久归 root 所有,无论其有效 UID 如何。