繁體中文

開發者工具 · Chmod 計算器

chmod 無法表達的內容:功能、不可變檔案和 MAC

· 背景

chmod UNIX 存取控制

超出模式位元的限制,顯示為不同的 Unix 權限位圖
原始 ToolAcre 向量圖

模式位元是決定操作是否成功的幾個層之一。這篇文章介紹了其他的(檔案功能、chattr 標誌、SELinux 和 AppArmor)以及如何識別每個人的拒絕。

Root 無法寫入 644 檔案 — 模式顯示“是”,chmod 沒有更改任何內容,錯誤仍然存在

模式可能允許操作,但操作仍然失敗。計算器將 644 解碼為 rw-r--r--,這意味著擁有者可以讀取和修改常規檔案,而群組和其他人可以讀取它。這僅解決了提供的傳統位的問題。它既不能證明進程所有權、路徑身份,也不能證明另一個執行層的存在。

來源名稱了幾個未建模的控制項:功能、不可變屬性、強制存取策略、安裝標誌、命名空間、系統呼叫篩選器、ACL 和所有權。重新進入模式或產生另一個 chmod 命令不會顯示任何有關它們的資訊。首先驗證八進制、符號和矩陣的一致性;如果失敗仍然存在,請從環境中收集證據,而不是擴大 chmod 猜測。

對於該工具看不到的層,模式相容操作仍然可能失敗

計算器不會模擬外部控制項之間的順序。它的整個資料模型是一個從八進位 0000 到 7777 的整數,擴展為擁有者、群組、其他、setuid、setgid 和黏性布林值。解釋使用該值和目標類型。沒有內核決策路徑、安全模組序列或系統呼叫結果進入計算。

此限制使頁面成為受控的第一步。確認模式,區分遍歷和執行,記下特殊位元字母。文章 501 新增所有權和父目錄執行作為附近檢查。除此之外,這些來源不提供 ACL、強制策略、掛載、屬性、命名空間、功能或過濾器之間的診斷排名。相容模式只會縮小問題範圍。

計算器不會對外部執行層之間的排序進行建模

檔案功能不在可用證據範圍內。此實作不包含功能名稱、資料解析器、檢查命令或它們與 setuid 互動的說明。它可以將 setuid 編碼為 4000 並解釋一個可執行的常規檔案。這不應該與該儲存庫既不建模也不記錄的更細粒度的權限系統進行比較。

該頁面證明的是具體的。模式 4755 變成 rwsr-xr-x,其摘要名稱為 setuid,賦值附加 u+s。模式 4644 使用大寫 S,因為擁有者執行不存在,從而暴露了一個稱為「幾乎總是錯誤」的組合。測試確定這些模式事實;外部工具必須確定功能是否存在、是否允許存取或提供更好的設計。

檔案功能位於來源集之外

模型中也不存在不可變且僅附加屬性。計算器既不讀取檔案系統屬性,也不識別用於更改它們的命令。它的矩陣包含用於所有者、群組和其他的 rwx,以及三個特殊位元。因此,可見的寫入位元不能保證成功寫入,並重複切換它不能診斷頁面從未觀察到的屬性。

保持差異的可操作性。如果 644 渲染正確,則傳統模式下存在所有者寫入;這是代表性證據,而不是完整的書寫。該頁面不會開啟安全引用的顯示路徑或執行其產生的命令。當足夠的位元伴隨真正的故障時,檢查實際的物件和系統,而不是歸因於未觀察到的狀態。

不可變且僅附加屬性位於來源集之外

此處不解析強制存取控制上下文、設定檔和日誌。消息來源僅將 SELinux 和 AppArmor 作為計算器無法觀察到的決策範例。它們不提供上下文語法、策略語義、日誌格式或診斷命令。因此,僅模式不能將拒絕歸因於任一系統;證據必須來自執行環境。

檔案或目錄選擇器強化了這個邊界。它更改諸如執行、列表、創建、刪除、輸入和到達等動詞,但既不更改整數也不讀取策略標籤。 755 程式和目錄在描述不同的普通操作時共用 rwxr-xr-x。這兩種解釋都無法預測強制政策的結果,因此請保留經過驗證的模式並查閱平台日誌。

強制存取控制上下文和日誌位於來源集之外

提供的模式無法顯示安裝選項。計算器接受八進位或符號文字以及僅用於命令顯示的可選路徑。它永遠不會打開該路徑、識別其安裝或讀取配置。來源將唯讀、不執行和無 setuid 行為列為外部問題,但沒有提供用於診斷這些策略的平台詳細資訊。

產生的文字可能包括八進位模式、帶有引號的路徑和顯示的 -R 標誌,但沒有一個證明檔案系統會滿足該請求。即使是完美往返的特殊位值,在看不見的規則下也可能無效。將命令視為審查工件,然後在宣告權限變更或可執行之前驗證目標檔案系統。

未從提供的模式中發現安裝選項

命名空間和系統呼叫過濾器不會出現在模式模型中。輸入不包含進程標識、容器上下文、系統呼叫清單或執行時配置。該頁面無法知道進程是否看到相同的路徑、到達預期的物件或過濾了呼叫。這些問題與在權限三元組中加入 4、2 和 1 有著根本的不同。

不要從成功的轉換推斷執行時機制。驗證涵蓋格式錯誤的八進制數字、符號長度和錯誤的字母。有效的結果僅意味著文字映射到可表示的模式;它不驗證執行環境。由於產生的 shell 文字是惰性的,因此命名空間和過濾器分析仍然需要這些來源中缺少的執行時證據。

命名空間和系統呼叫過濾器未表示

從模式開始,因為它緊湊且易於排除或排除。轉換值,檢查每個類,區分檔案和目錄,並公開任何特殊位元前綴。八進制、符號、矩陣、摘要和解釋之間的一致性使傳統問題得到了很好的組織。它可能會揭示缺失或過多的位,而不是排他性的權限。

僅使用來自真實系統的證據繼續。所有權、ACL、屬性、強制策略、掛載、功能、命名空間、篩選器和應用程式規則均未在此處發現。預覽既不讀取也不更改檔案。嚴格的結論很狹窄:在本地解決提供模式算術,然後調查外部執行,而不是在不知道拒絕的情況下循環使用更廣泛的 chmod 值。