Files

主目錄中配置文件的權限檢查:應該完成 嗎?

  • September 18, 2015

假設我正在實現一種具有互動模式的程式語言,並且該互動模式讀取~/.foo_rc使用者主目錄中的一些文件。該文件包含該語言的程式碼,可用於自定義某些首選項。讀取此文件時語言不被沙盒化;該文件可以做“任何事情”。

我應該費心對文件進行權限檢查嗎?像:

$ foo -i
Not reading ~/.foo_rc because it is world-writable, you goof!
P.S. you don't even own it; someone else put it there.
> _

我正在查看 Bash 原始碼,它不會為權限檢查而煩惱~/.bash_profile(除了它存在並且是可讀的,這是用它做任何事情的先決條件)。

$$ Update $$ 在考慮了 thrig 的回答後,我對文件進行了以下檢查:

  • 如果文件不屬於呼叫者的有效使用者 ID,則它是不安全的。
  • 如果該文件對其他人是可寫的,那麼它是不安全的。
  • 如果該文件對所屬組是可寫的,那麼如果該組包括呼叫者以外的使用者,則它是不安全的。(即該組必須是空的,或者將呼叫者作為其唯一的成員)。
  • 否則它被認為是安全的。

請注意,組檢查不假設數字使用者 ID 和組 ID 或其名稱之間的任何對應關係;它基於檢查使用者是否被列為唯一成員。

(在執行此檢查的函式的文件中添加了一條註釋,說明它受檢查時間與使用時間競爭條件的約束。應用檢查後,無辜的超級使用者可以使用其他成員擴展組,誰可能是惡意的,並在文件被訪問時對其進行修改。)

合理和謹慎,只要對失敗的文件以及失敗的原因有明確的警告,以便使用者可以修復權限問題。bash可能是從一個更信任(和惡作劇)的日子開始的。請注意,如果站點有每個使用者進入只有該使用者所在的組的策略,則使用者文件可以合法地是組可寫的,否則不是。

(父目錄檢查也可能是謹慎的,以檢測chmod 777 $HOME錯誤。)

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