Linux
/proc/*/cmdline 是世界可讀的有什麼原因嗎?
也許我今天還沒有喝足夠的咖啡,但我不記得或想不出為什麼
/proc/PID/cmdline
應該是世界可讀的——畢竟,/proc/PID/environ
不是。使其只能由使用者(當然也可能是組和 root)可讀,可以防止作為命令行參數輸入的密碼被隨意暴露。
當然,它會影響其他使用者的執行
ps
等等htop
——但這是一件好事,對吧?那將是不使其具有世界可讀性的關鍵。
我懷疑主要的,也許唯一的原因是歷史原因——
/proc/.../cmdline
最初是世界可讀的,所以為了向後兼容,它仍然是這樣。cmdline
在 1992 年 12 月 2 日發布的 0.98.6 中添加,模式為 444;變更日誌說- /proc filesystem extensions. Based on ideas (and some code) by Darren Senn, but mostly written by yours truly. More about that later.
我不知道“後來”是什麼時候;據我所知,Darren Senn 的想法已經消失在時間的迷霧中。
environ
是向後兼容論點的一個有趣的反例:它一開始是文字可讀的,但在 1.1.85 中只有它的所有者才可讀。我還沒有找到更改日誌,所以我不知道原因是什麼。
/proc/${pid}
(包括)的整體可訪問性和可見性/proc/${pid}/cmdline
可以使用proc``hidepid
3.3 版核心中添加的mount 選項來控制。gid
mount 選項可用於授予對特定組的完全訪問權限,例如*,*監視程序仍可以在不以 root 身份執行的情況下查看所有內容。