
我建議我有一個666權限的日誌文件,它的所有者是alice。因此用戶「bob」可以透過以下方式更改其所有者:
cp log log.temp; rm log; mv log.temp log
那我該如何解決這個風險呢?
答案1
正如安德烈上面所說,鮑勃只有在擁有包含該文件的目錄的權限時才能執行您所說的操作。如果您想讓 bob 存取但無法建立新文件,只需將 dir 權限變更為 xx5 即可。
從使用者的角度來看,文件和資料夾的存取權限意味著不同的事情。
對於文件
- 讀: 如果可以讀取文件內容
- 寫:使用者或進程是否可以寫入檔案(更改其內容)
- 執行:如果檔案可以執行
對於目錄
- 讀:如果可以獲得目錄列表
- 寫:如果使用者或進程可以以某種方式變更目錄內容:在目錄中建立新檔案或刪除現有檔案或重新命名檔案。
- 執行:如果使用者或程序可以存取該目錄,即前往該目錄(使其成為目前工作目錄)
答案2
假設OP有充分的理由讓alice和bob擁有對日誌目錄的寫入權限,則替代答案是。
chmod og+t directorypath
問題不在於用戶可以讀取日誌文件,甚至他們可以在同一目錄中創建新文件,而是他們可以移動和刪除現有的日誌文件。
+t
將目錄中的檔案的移動和刪除限制為僅該檔案的擁有者(除 root 之外)。
這就是/tmp
dir 的工作原理。