開發者工具 · Chmod 計算器
Unix 權限模型:從 1970 年代的 chmod 到 POSIX 模式位
· 背景
chmod UNIX 存取控制
所有者/group/others 模型已經存在了幾十年,幾乎沒有任何變化。這篇文章追溯了它的來源、POSIX 標準化的內容以及為什麼它仍然適合大多數工作。
2020 年代部署中的 1970 年代設計 — 每個容器和 CI 執行程序仍然使用 rwx,了解原因會有所幫助
目前部署仍然存在 0644 等模式和 rw-r--r-- 等符號字串,但此儲存庫不是歷史存檔。它的證據是實現的表示:十二位、確定性轉換以及八進制和符號輸入的驗證。關於每個 Unix 衍生系統的日期、發明人、專利和宣告需要此處未提供的來源。
因此,計算器提供了緊湊權限模型的現在式視圖。一個整數驅動所有者、群組和其他控制項以及 setuid、setgid 和 Sticky。可以以八進制、符號和矩陣形式檢查輸出。協議證明了一致的轉換,而不是模型的起源、普遍性或執行。
目前部署中出現長期存在的符號,但此儲存庫並非歷史來源
九個普通位形成三個相等的類別。擁有者、群組和其他人各自接收權重為 4、2 和 1 的讀取、寫入和執行位置。計算器在任何地方都保持該順序:在尾隨的三個八進制數字、九個字元的符號行、複選框矩陣以及為檔案或目錄產生的簡單英語描述中。
640 模式示範了沒有沿襲宣告的結構。擁有者6表示讀寫,群組4表示讀取,其他0表示無普通權限,產生rw-r-----。正如文章 501 所解釋的,這些是可計算的標誌;識別實際所有者、群組或流程仍然在轉換之外。
實現的模型有三個類別的九個普通位
Setuid 被實作為 4000 遮罩。在常規檔案上,當 setuid 和擁有者執行都存在時,呈現器將 s 放置在所有者執行位置。如果 setuid 存在但沒有所有者執行,則會將 S 放在那裡,從而保留特殊位與其下面的普通執行位之間的重要區別。
檔案描述將小寫字母解釋為使用檔案擁有者的身分執行,並將大寫字母組合標記為沒有任何可執行的內容。這些語句描述了該實現的輸出。此儲存庫不提供專利記錄或主要歷史記錄,因此本節不提供該機制的歸屬或引入日期。
setuid 行為已實現;專利歷史未出處
目錄解釋對普通位元使用相同的數值但不同的動詞。讀取列出條目,寫入涵蓋建立、重新命名和刪除條目,執行涵蓋進入目錄並到達指定內容。該實作還將目錄上的 setgid 描述為導致新建立的檔案繼承該目錄的群組。
Sticky 由 1000 表示,並佔據另一個執行位置,如 t 或 T。對於目錄,該工具描述了共享條目的限制刪除。這些是由計算器呈現的實作語義;沒有建立分支歷史或跨系統沿襲,也沒有查詢即時檔案系統來確認本地行為。
目錄特殊位元行為的描述沒有沿襲宣告
來源直接為每個面具命名:0400、0200、0100為所有者; 0040、0020 和 0010 為團體;其他為 0004、0002 和 0001。 setuid、setgid 和 Sticky 加 4000、2000 和 1000。轉換是位元測試和位元組合,而不是訴諸外部標準。
輸入規則同樣具體。八進位接受從 0 到 7 的一到四位數字,並具有可選的 0 或 0o 樣式前導形式。符號輸入接受九個位置或十個帶有可識別檔案類型字元的位置。此儲存庫並未確定每個實作或標準都接受完全相同的表面語法。
命名位元遮罩和轉換語義得到驗證;通用標準聲稱不是
緊湊型模型有故意的限制。它提供一種擁有者類別、一種群組類別和一種其他類,但沒有命名使用者條目、命名群組條目、ACL 遮罩或預設 ACL。它也沒有能力集。這些機制無法從明顯普通的 rwx 字串或成功的八進位轉換推斷出來。
命令產生不會擴展模型。它發出八進制參數或顯式 u=、g= 和 o= 子句,並在需要時添加 u+s、g+s 或 +t。結果仍然顯示文字。在將該模式視為完整的存取控制帳戶之前,負責任的審查會分別收集任何 ACL、功能、所有權和執行證據。
ACL 和功能位於實作模式模型之外
此來源集不包含受支援的與 Windows、VMS、計劃 9 或其他作業系統權限歷史記錄的比較。省略這些敘述比將記憶中的對比呈現為事實更準確。計算器僅演示其實現的模式表示,其測試可以建立轉換行為而不是不相關係統的演化。
同樣的注意事項也適用於廣泛的兼容性語言。可以在九個權限位置之前解析可識別的前導檔案類型字符,但這並不能證明通用 ls 格式。使用輸出作為該工具可接受的符號的精確讀數,然後查閱權威平台檔案以了解超出這些來源支援邊界的行為。
其他作業系統權限歷史記錄被省略,沒有來源
這裡經得起審查的是所實現模型的緊湊性。十二個命名位涵蓋三個普通權限類別和三個特殊標誌,而八進位和符號視圖以不同的形式公開相同的整數。無效的數字或放錯位置的符號字母會被拒絕,而不是默默地修復,從而使轉換過程中出現錯誤。
對於沒有歷史課的實際外賣來說,這已經足夠了。解碼模式,檢查每個類,並注意 s、S、t 或 T 是否替換執行位置。然後在證據停止的地方停止:計算器解釋表示和產生的文字,而所有權、策略、檔案系統行為和歷史來源需要其他來源。