Files
主目錄中配置文件的權限檢查:應該完成 嗎?
假設我正在實現一種具有互動模式的程式語言,並且該互動模式讀取
~/.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
錯誤。)