Chmod 計算機可在嚴格的八進位值(例如 755 或 4755)與標準的九字元符號字串(例如 rwxr-xr-x)之間轉換任何完整的 Unix 權限快照,並在同一個瀏覽器分頁中處理完整的 setuid、setgid 與 sticky 狀態。每個值在顯示結果前都會依據 POSIX 位元規則進行驗證,因此即使反覆處理數百組權限模式也不會出錯,而且完全不需要上傳任何內容。這讓批次檢視模式位元變得實用:貼上一組八進位或符號快照,讀取標準八進位、九字元形式以及擁有者/群組/其他人對照表,然後變更輸入以處理下一筆。由於涵蓋了完整的 12 位元範圍——從 0000 到 7777 共 4,096 種不同模式——標準 chmod 空間中的任何數值都不會遺漏。特殊位元如同 Unix 一直以來的做法一樣,會結合成前導數字:setuid 為 4、setgid 為 2、sticky 為 1,三者相加即可決定該模式的整體行為。可見的輸出目的是供檢視,而非僅供信任,因此在套用至實際運作的系統之前,任何貼上的指令範本都應與實際目標、擁有者以及最小權限原則交叉比對。

chmod calculator bulk
chmod calculator bulk

嚴格的輸入驗證如何讓批次檢視安全無虞

本計算機中的「批次」並非指貼上一整串 CSV 格式的數值並取得一整串 CSV 結果。它指的是在同一個分頁中,快速地逐一處理多組權限快照。這個工作流程能成立的前提,是工具必須拒絕所有格式錯誤的輸入,並在輸入變更時拒絕沿用過時的結果。Chmod 計算機在轉換的兩端都強制執行一套簡潔而嚴格的規範:

  • 八進位輸入必須恰好為三個普通數字(例如 755),若涉及特殊位元則為四個數字(例如 4755)。0755 中的前導零可被接受,但標準輸出會將其省略。
  • 符號輸入必須恰好為九個字元:擁有者三個、群組三個、其他人三個。ls -l 所使用的檔案類型前導連字號,以及 chmod 修改運算式(例如 u+x)皆會被拒絕而非猜測。
  • 原始輸入欄位上限為 32 個 UTF-16 碼元。最後一個能放進去的字元會顯示語法錯誤;若再多一個字元會超出長度上限,則會明確顯示預算錯誤。不會發生靜默截斷。

編輯輸入會立即清除先前的結果、錯誤與複製狀態。延遲送達的非同步剪貼簿結果,無法在模式變更後繼續發布過時的成功訊息。對批次檢視工作流程而言,這代表每一筆新項目都從乾淨的狀態開始,你不會因為螢幕上殘留的舊轉換結果,而誤套了錯誤的 chmod 範本。

若你是從實際的檔案或目錄取得權限字串,如何找出並轉換檔案的 chmod 值 這篇配套指南,會展示從 stat 輸出回到已驗證模式字串的對應往返流程,再交給計算機處理。

使用瀏覽器工具批次轉換 chmod 值

驗證規則一旦釐清,處理多組權限值就只是對每一組重複同一個簡短步驟:

  1. 開啟 Chmod 計算機,並選擇「八進位轉符號」或「符號轉八進位」。切換方向會載入對應的範例,並清除先前的所有輸出。
  2. 以要求的嚴格格式輸入或貼上第一組完整快照——三或四位 ASCII 八進位數字,或九字元符號字串。
  3. 並列讀取標準八進位、九字元符號值,以及擁有者/群組/其他人對照表。將表中的位元與你對擁有者、群組和其他人的預期交叉比對。
  4. 確認符號輸出中的任何 setuid (s/S)、setgid (s/S) 或 sticky (t/T) 標記,皆與標準八進位中的前導數字一致。
  5. 使用「複製」將 chmod OCTAL FILE 範本寫入剪貼簿。在檢視過擁有權、上層目錄的遍歷權限以及最小權限需求後,再將 FILE 佔位符替換為實際路徑。
  6. 編輯輸入欄位以載入下一個值。先前的結果、錯誤與複製狀態會自動清除。

這六步驟迴圈就是批次轉換的模式。當鍵盤焦點停留在輸入欄位時,執行速度通常比去拿桌面計算機或列印速查表還快,所有可供檢視的資訊——八進位、符號與對照表——都能同時一目了然。

解讀普通與特殊八進位數字

三個普通八進位位置分別對應擁有者、群組與其他人。每個位置都是由讀取 (4)、寫入 (2) 與執行/目錄搜尋 (1) 相加構成。完整的數字組合不多,值得熟記,因為這正是每個 chmod 指令與每個列表工具所使用的內容。

數字讀取 (4)寫入 (2)執行 (1)意義
0無普通權限
1on僅執行或目錄搜尋
2on僅寫入
3onon寫入與執行
4on僅讀取
5onon讀取與執行
6onon讀取與寫入
7ononon讀取、寫入與執行

當出現第四位數字時,它不屬於擁有者、群組或其他人這三個位置,而是結合了三個特殊位元:setuid 為 4、setgid 為 2、sticky 為 1。因此 6755 同時帶有 setuid 與 setgid,7755 同時帶有全部三個特殊位元,而 4755 是經典的 setuid 可執行模式。標準輸出會保留非零的前導數字,並在沒有設定特殊位元時省略多餘的前導零;0755 會往返轉換為與你手動輸入相同的 755。

符號快照與 s、S、t、T 大小寫規則

九字元符號形式由三組三元組成:擁有者 rwx、群組 rwx、其他人 rwx。讀取位置接受 r 或連字號,寫入位置接受 w 或連字號,普通執行位置接受 x 或連字號。這就是列表工具常顯示的權限部分,不含前導的檔案類型字元。

特殊位元共用三個執行位置,而計算機保留了 ls 所使用的大小寫區分,以便往返轉換時能精準還原位元。規則簡短,值得在批次檢視工作中牢記:

  • 擁有者或群組執行位置中的小寫 s 表示對應的特殊位元(setuid 或 setgid)已設定,且執行位元也已設定。
  • 大寫 S 表示特殊位元已設定但執行位元未設定——特殊位元無可套用的對象。
  • 其他人執行位置中的小寫 t 表示 sticky 位元已設定,且其他人執行位元也存在。
  • 大寫 T 表示 sticky 已設定但其他人執行位元未設定。

由於大小寫資訊在每次轉換中都會保留,因此觀察你看到的是 rws、rwS、rwt 還是 rwT,就能立刻判斷相關的執行位元是否同時存在。任何會摺疊大小寫、去除大小寫,或將特殊位元呈現為普通 x 的做法,都會遺失這項資訊,破壞真正的模式位元往返轉換。

批次轉換工具不會做的事

計算機「描述」的內容與它「實際變更」的內容之間有清楚界線。對批次工作流程而言,這些限制特別重要,因為它們決定了你仍須在瀏覽器分頁之外手動完成的工作:

  • 它不會對任何檔案(本機或遠端)執行 chmod。它只在瀏覽器中轉換文字,並複製一個 chmod OCTAL FILE 範本。FILE 欄位是字面上的佔位符。
  • 它不接受檔案路徑、目前權限、擁有權或 umask。Umask 不會被當作第四位數字悄悄套用至你的輸入。
  • 它不會解析 chmod 修改運算式(例如 u+x),也不會解析 ls -l 輸出中前導的檔案類型連字號。這些攜帶不同資訊且必須經過猜測,因此會被拒絕。
  • 它不會遞迴進入目錄、追蹤符號連結,也不會觸及 ACL、capability 或檔案系統旗標(例如唯讀或 noexec)。
  • 它不會判斷所要求的模式對特定服務是否真的安全。即使設為 777,仍可能因 ACL、上層目錄的遍歷權限或掛載狀態而失敗。

換言之,輸出只是所要求模式位元的檢視輔助,而非有效授權的保證。POSIX 定義了位元位置,但實際存取仍可能受到擁有權、存取控制清單、capability、掛載選項、唯讀檔案系統、應用程式沙箱化,以及其他作業系統政策影響,詳見 GNU chmod 說明手冊。此外,程序還需要擁有遍歷上層目錄的權限,777 模式並不免除該要求。

批次檢視權限值的實用訣竅

幾個小習慣能讓冗長的批次檢視保持可靠。在整個過程中保持輸入欄位的焦點並鎖定轉換方向,這樣一個誤觸的 Tab 鍵才不會把範例翻面。及早將至少一組八進位與一組符號值與已知參考(例如 700 對應 rwx------)進行交叉比對,確認方向讀取符合預期。當對照表與符號輸出看起來不一致時,請以對照表為準——標準八進位、符號形式與對照表皆衍生自相同的位元組合,但對照表以一欄一欄的方式分別顯示擁有者、群組與其他人,對於大量數值的快速核對通常更為容易。

最後,避免僅為了規避權限錯誤,就將像 777 這類過於寬鬆的範例一次套用到大量檔案。應先診斷擁有權、群組、上層目錄的遍歷權限、ACL 與服務身分;批次步驟是檢視,而非修復。計算機提供的是指令將要求的模式位元;至於這些位元中哪些能實際生效,則由作業系統決定,而那是屬於主機層級的另一個問題。

若你正在權衡各種選項,批次產生 Box Shadow 工具:堆疊多層 CSS 陰影 對此有詳細介紹。