繁體中文

開發者工具 · Chmod 計算器

chmod 符號模式解釋:u+x、g-w、o=r 與 a+rX

· 工作原理

chmod UNIX 開發人員工作流程

符號指派顯示為不同的 Unix 權限位圖
原始 ToolAcre 向量圖

chmod 的符號形式是一個微小的語法:who、operator、which 位元。這篇文章將其拆開,使 u+x 和 go-rwx 變得顯而易見,並顯示符號何時擊敗八進制。

一個充滿字母的部署腳本 - chmod u+x,go-w deploy.sh 有效,但團隊中沒有人能說出它改變了什麼

u+x 等指令看起來像計算器的符號顯示,但兩種形式有不同的作用。可編輯的符號欄位接受九個權限位置,可以選擇在其前面新增可識別的檔案類型字元。相較之下,產生的 chmod 參數以 u=、g= 和 o= 子句拼出完整的賦值,因此它表示固定模式而不是解析相對變更。

輸入 750 使差異具體化。顯示為rwxr-x---,而產生的賦值為u=rwx,g=rx,o=。兩者都描述相同的所有者、群組和其他位,但只有第二個被格式化為 chmod 參數。該頁面從不執行該命令。它公開了表示形式,以便可以在任何單獨的 shell 操作之前審查建議的值。

計算器將 ls 樣式的顯示與其產生的作業清單分開

字母 u、g 和 o 出現在產生的作業中,因為它們標記擁有者、群組和其他。每個輸出都明確命名所有三個類,當類別沒有權限時包括一個空子句。計算器不會解析省略的 who 語法或 a 速記。它的輸入從已完成的模式開始,而不是結果取決於現有目標的指令。

此更正可防止微妙的誇大。此矩陣可以準確顯示哪個類別接收讀取、寫入或執行,但它無法決定省略的類別選擇器在另一個 chmod 實作中意味著什麼。將三個矩陣列與三個賦值子句進行比較。他們的協定驗證固定值,而不依賴該介面未實現的相對命令規則。

產生的作業中出現了哪些字母;相對省略-who語法不被解析

賦值產生器對每個普通類別使用=。此選擇準確地重建了所請求的所有者、群組和其他三元組,包括透過發出空的右側來清除類別。儘管 + 和 - 屬於符號 chmod 指令,但不接受它們作為計算器輸入。因此,該頁面不會對未知啟動模式的增量新增或刪除進行建模。

一位比較顯示了支援的工作流程可以證明什麼。模式 750 渲染 rwxr-x---;將群組數字變更為 7 會產生 rwxrwx--- 並將 g=rx 變更為 g=rwx。計算器識別完成的前後模式。它不會針對即時檔案評估 g+w,因為當前模式、路徑、檔案系統或命令執行不參與轉換。

產生的運算子是 =,而 + 和 - 輸入語法保留在工具之外

解析器在固定位置辨識 r 和 w,在普通執行位置加上 x 或 -。它也接受 s、S、t 和 T,其中特殊位元共享這些位置。大寫X則不同:它屬於相對chmod語法,這裡不支援。提供 X 會被拒絕,而不是默默地解釋為普通執行位。

小寫和大寫特殊字母是有意實現的。當 setuid 和 setgid 匹配的執行位存在時,使用 s;當不存在時,使用 S; Sticky 在其他執行位置按照相同的規則使用 t 或 T。特殊行和四位數摘要保留這些位元。所有這些都沒有增加對跨檔案和目錄的條件大寫 X 選擇的支援。

解析器接受 r、w、x、s、S、t 和 T;不支援大寫X

類別複製表達式(例如 g=u)未實作。計算器從不從現有物件中讀取來源類別或將一個類別的位元套用到另一個類別。它接收完整的八進位或 ls 樣式模式,將該值轉換為命名布林值,並為每個類別發出明確標誌。任何複製的結果必須先在其他地方計算,然後此頁面才能檢查它。

假設外部步驟決定所有者和群組都應具有 rwx,而其他則沒有。輸入 770 產生 rwxrwx--- 和 u=rwx,g=rwx,o=。這證實了完整的結果,但沒有證明它是如何得出的。所有權也仍然未知:轉換器標記類,但不識別真正的所有者、群組或將遇到目標的進程。

未實現在類別之間複製權限

模式 0750 以其前導零被接受,並解析為與 750 相同的值。擁有者數字 7 啟動讀取、寫入和執行;群組位元 5 啟動讀取和執行;其他數字 0 不會啟動任何內容。同步顯示變為 rwxr-x---,並始終為四位數字的摘要使 0750 保持可見,作為明確的審核值。

為此固定模式產生的符號賦值為 u=rwx,g=rx,o=。它的三個子句直接對應於矩陣列,而八進位命令預覽使用 750 ,除非特殊位元需要第四位數字。提供的路徑可能會在預覽中引用,但永遠不會打開。此範例驗證表示,而不是所有權、授權或成功的權限變更。

工作範例:0750 作為固定模式並產生分配列表

基於引用的變更、符號連結處理和 ACL 操作保留在此轉換器之外。頁面中沒有參考檔案輸入、路徑遍歷、ACL 條目模型或檔案系統查詢。選擇遞歸僅新增顯示的 -R 標誌。因此,產生的命令無法報告將到達哪些物件或另一個存取控制層是否更改了有效結果。

無效輸入提供了有用的邊界檢查。錯誤放置的許可函、不受支援的 X、尾隨標記或格式錯誤的八進制數字將被拒絕而不是修復。將文字修正為支援的九字元顯示會產生模式和同步視圖。該接受僅證明該字串映射到已實現的 12 位元;它不驗證外部 chmod 功能或目標環境。

引用、符號連結和 ACL 操作保留在此轉換器之外

實際差異在於 ls 樣式顯示和產生的固定賦值之間,而不是作為相對的符號輸入和作為絕對的八進位輸入之間。兩種可編輯形式都代表完成模式。計算器將其中一個轉換為相同的整數、矩陣、摘要、解釋和預覽,然後為符號命令形式發出明確的 u=、g= 和 o= 子句。

使用這些同步視圖來擷取算術錯誤。若750、rwxr-x---、u=rwx,g=rx,o=同時出現,則固定模式內部一致。除非實際系統提供更多證據,否則就到此為止。該頁面不會解析相對運算子、省略的選擇器、類別複製或大寫 X,也無法確定該模式是否解決了真正失敗的操作。