繁體中文

開發者工具 · Chmod 計算器

如何讀取 ls -l 權限並將其轉換為八進位模式

· 工作原理

chmod UNIX 開發人員工作流程

ls 樣式模式字串顯示為不同的 Unix 權限位圖
原始 ToolAcre 向量圖

ls -l 開頭的十個字元的字串是檔案類型加上九個權限位元。這篇文章展示瞭如何解碼它並產生 chmod 想要的八進位模式,包括特殊位元字母。

貼上 -rw-r-----+ 的票證 — 您需要知道是否告訴使用者執行 chmod 640 或其他內容

貼上的字串(例如 -rw-r-----+)所包含的內容超出了此解析器所接受的範圍。辨識的核心是一個九個字元的權限主體,前面可以選擇一個受支援的檔案類型字元。尾隨的加號會使輸入太長而被拒絕。刪除該外部標記會留下 -rw-r-----,它會轉換為 640:擁有者讀取 /write, 群組讀取,其他人沒有權限。

除了文章 501 警告長列表可能將其用於 ACL 之外,該轉換不會解碼加號代表的內容。計算器沒有 ACL 條目或遮罩。它也不檢查票據的機器、所有者、群組或路徑。因此,模式 640 是接受核心表示的基本權限值,而不是有效存取的完整答案。

第一個字元是類型 — 破折號、d、l、c、b、p 和 s,以及為什麼它不是模式的一部分

可選的第一個字元被視為類型標記而不是權限位元。解析器識別 -、d、l、b、c、p、s、D 和 ?。當一個出現在九個有效權限位置之前時,它將被刪除以進行算術運算。產生的擁有者、群組和其他三元組單獨確定八進制值和矩陣選擇。

使用等效輸入很容易驗證此行為。 rwxr-x--- 和 -rwxr-x--- 都產生 750 因為前導破折號不貢獻任何模式位元。目錄標記可以位於相同主體之前,並仍然產生相同的整數。目標選擇器單獨控制解釋性措辭,因此接受類型字元並不意味著瀏覽器已發現或開啟該物件。

三組中的九個字元 - 擁有者、群組、其他,始終按 rwx 順序,每個關閉的位元都有破折號

九個權限位置依擁有者、群組和其他順序形成三個固定三元組。在每個三元組中,讀取佔據第一個位置,寫入第二個位置,執行第三個位置。破折號表示相應位已關閉。特定於位置的驗證會拒絕放錯位置的字母而不是猜測,因此寫入位置的 r 不能默默地成為另一個權限。

每個接受的三元組依文章 501 中的權重對應到一位八進位數字:讀取為 4,寫入為 2,執行為 1。此矩陣顯示與複選框相同的標誌,並在其中一個發生變更時重建整數。僅在執行位置接受特殊字母,保留 setuid、setgid 或與底層執行狀態黏在一起。

工作範例:-rwxr-x--- 到 750 — 將 4、2、1 分配給每個字母並按群組求和

透過忽略前導類型標記並將主體拆分為 rwx、r-x 和 --- 來轉換 -rwxr-x---。擁有者擁有 4+2+1,正在產生 7。組有 4+1,正在生產 5。其他沒有啟用位,產生 0。計算器傳回 750 並選擇匹配的九個普通權限框。

反向檢查應落在同一文字主體上。輸入750,符號欄位變成rwxr-x---;為顯示的形式選擇一個常規檔案標記,它會變成-rwxr-x---。作業預覽採用不同的語法:u=rwx,g=rx,o=。所有三種觀點都描述了一種固定模式,而所有權和應用它的智慧仍然沒有解決。

尾隨的加號和 at 符號 — + 表示 ACL 條目存在,@ 表示 macOS 上的擴展屬性,兩者都不屬於模式的一部分

尾隨的加號和 at 符號是大綱中的元資料標記,但實現的事實更窄:此解析器拒絕其中任何一個,因為接受的輸入在權限正文之後結束。文章 501 特別標識了帶有 ACL 的尾隨加號。 CHMOD_SOURCES 並未為 at 符號提供等效的解釋,因此本節不會為其分配儲存庫不支援的作業系統意義。

當有效存取很重要時,不要盲目地移除任何標記。相反,將接受的九個或十個字元核心分開以進行基本模式轉換,並使用來自原始系統的證據調查任何剩餘部分。計算器可以顯示rw-r-----表示640。它無法解釋其他元資料、讀取擴充屬性或確定其他存取控制機制是否會變更使用者或進程可以執行的操作。

尾隨的加號和 at 符號是此解析器拒絕的元資料標記

瀏覽器計算器不執行外部統計指令。該頁面沒有命令執行程式或檔案系統存取權限;它的路徑欄位的存在只是為了建構帶有引號的 chmod 文字以供顯示。因此,它無法獲取當前模式、比較特定於平台的命令輸出或證明貼上的字串來自特定實用程式。使用者必須提供要轉換的值。

一旦提供了可信模式,瀏覽器就會提供獨立的表示檢查。輸入符號核心並比較其八進位結果、矩陣、摘要和作業預覽。協議捕獲支援格式內的轉錄和算術錯誤。它不會驗證外部收集命令、揭示所有權或證明所表示的權限對從中複製文字的物件有效。

瀏覽器計算器不執行外部統計指令

ACL 解碼保留在路由之外。其模型包含擁有者、群組、其他和三個特殊位,沒有命名條目或 ACL 遮罩。 Windows 權限解碼同樣不存在:沒有 Windows 身分識別模型、存取控制條目語法或平台發現。九位元 Unix 風格的核心可以轉換,但附加的權限系統都無法從該結果重建。

此邊界也限制了診斷。看起來足夠的基本模式並不能證明 ACL 或其他策略是不相關的,而限制模式並不能辨識每個可能的授權。計算器僅計算十二個代表位。使用其輸出精確地說明普通模式,然後保留有關實際公開外部權限系統的工具和檔案的有效授權的宣告。

ACL 和 Windows 權限解碼保留在路由之外

一旦接受的核心被隔離,讀取 ls 樣式模式就會變得機械化。刪除一個已識別的前導類型字符,將剩餘的九個位置分為所有者、群組和其他,並在每個三元組中總共讀取 4、寫入 2 並執行 1。計算器執行該轉換並驗證位置特定的字母,包括實現的 s、S、t 和 T 形式。

保持結論與輸入成正比。成功的轉換證明接受的字串一致地對應到八進位模式、矩陣、摘要和產生的賦值。它不執行 stat、檢查路徑、解碼尾隨標記、識別所有權或應用 chmod。這些限制使輸出變得有用:它對於基本模式算術是精確的,並對於它從未收集的證據保持沉默。