Linux

/proc/*/cmdline 是世界可讀的有什麼原因嗎?

  • October 18, 2021

也許我今天還沒有喝足夠的咖啡,但我不記得或想不出為什麼/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``hidepid3.3 版核心中添加mount 選項來控制。gidmount 選項可用於授予對特定組的完全訪問權限,例如*,*監視程序仍可以在不以 root 身份執行的情況下查看所有內容。

引用自:https://unix.stackexchange.com/questions/673641