開發者工具 · Chmod 計算器
執行位元對目錄執行什麼操作,以及為什麼 644 資料夾會中斷
· 工作原理
chmod UNIX 開發人員工作流程
在目錄上,x 不是執行任何東西;而是執行任何東西。它授予穿越權。這篇文章解釋了 read/search 分割、它產生的奇怪情況以及避免它們的模式。
您可以讀取的檔案的權限被拒絕 - 檔案是 644,目錄是 644,cat 仍然失敗
當可讀檔案的目錄缺少相關類別的執行時,該檔案可能仍然無法存取。文章 501 呼叫目錄執行遍歷而不是執行資料夾。計算器的目錄解釋更加明確:讀取列出條目,寫入允許條目更改,執行允許進入目錄並按名稱存取其中的檔案。模式 644 沒有任何類別的執行位元。
將 644 與 755 進行比較。第一個渲染 rw-r--r--;第二個渲染 rwxr-xr-x。每個類別都獲得執行權,而只有所有者在兩種模式下都保留寫入。這種對比解釋了所代表的權限差異。該頁面不會檢查檔案、識別存取進程或測試祖先目錄是否阻塞實際路徑。
讀取列表,執行遍歷 - 目錄 r 如何顯示名稱,而 x 讓您按名稱打開條目並統計它們
目錄讀取和執行是具有單獨解釋的單獨標誌。讀取對應於清單條目。執行相當於進入目錄並到達其中的指定檔案。因此,一類在數值模型中可以只有一個而沒有另一個。此矩陣透過在每個類別數字中將讀取權重 4 放置在權重 1 處執行,從而保持這種差異可見。
將其他類別數字從 4 改為 5 是一個重點示範。符號三元組從 r-- 移動到 r-x,目錄解釋在保留清單的同時添加了基於名稱的可及性。這是一個轉換事實,而不是即時存取測試。所有權、身分、ACL 條目和強制策略不存在,因此計算器無法確定哪個類別管理真正的請求。
四種組合 - r 不帶 x、x 不帶 r、兩者和兩者都不是,以及每種組合讓使用者實際執行的操作
四種讀取和執行組合無需分配更廣泛的系統行為即可表示。數字 4 為 r--,數字 1 為 --x,數字 5 為 r-x,數字 0 為 ---。對於目錄目標,產生的散文將這些選定的位元與清單和基於名稱的可及性相關聯。寫入仍然是一個獨立的標誌,並不被讀取或執行所暗示。
使用矩陣一次隔離一個類,而不是將三位數模式視為標籤。每當框發生變化時,頁面都會重建整數,因此匹配的數字和符號位置會一起移動。它無法開啟目錄或嘗試查找。這四種組合是精確建模的權限,而任何有效結果都取決於單獨觀察的目標上下文。
遍歷適用於每個祖先 - 為什麼路徑上方的一個限制性目錄會破壞對下面所有內容的訪問
文章 501 指出缺少父目錄執行權限是有效檔案模式無法解決存取問題的原因。路徑中的每個目錄元件都有自己的模式問題。計算器可以獨立解碼每個提供的值,並顯示所有者、群組或其他執行是否存在。它無法行走路徑或確定哪個類別適用於請求的身份。
這使得祖先分析成為外部檢查工作流程而不是計算器功能。如果父級報告為 750,則頁面顯示 rwxr-x---;如果另一個是 700,則顯示 rwx------。這種差異是具體的,但在所有權和流程成員身份已知之前,無法得出結論。命令預覽仍然無效,並沒有提供任何證據表明更改任一目錄是適當的。
工作範例:修正 Web 根目錄 - 檢查服務檔案中的每個目錄並選擇 755 或 750
對於 Web 根範例,逐一元件檢查提供的模式,而不是為樹指定一個值。模式 755 授予擁有者 rwx 和群組以及其他 r-x;模式 750 刪除所有其他權限,同時保留群組 r-x。轉換器使這種差異變得可見。它無法識別 Web 進程、發現路徑或選擇需要遍歷的類別。
分別檢查所提供的檔案及其目錄。提供的檔案模式(例如 644 )呈現 rw-r--r--,而選擇作為目錄的相同數字描述不同的操作並缺少到處執行。這種目標敏感的措詞可以防止檔案讀取與目錄遍歷混淆。適用性仍然取決於實際所有權、進程身分、祖先以及頁面中缺少的任何存取控制層。
遞歸做得正確 - 為什麼樹上的 chmod -R 644 是典型錯誤以及大寫 X 或 find -type d 如何避免它
遞迴顯示有意適度。選擇它只會將 -R 插入產生的 chmod 命令中;計算器不會列舉樹或區分檔案和目錄。在任何地方應用完整的 644 模式將使每個類別中的目錄執行清晰。該頁面可以顯示該結果,但它不會實現大寫 X 或檔案類型選擇工作流程。
產生的符號賦值也保持固定。對於 644 ,它們是 u=rw,g=r,o=r,而不是有條件保留遍歷的相對命令。 ls 樣式欄位顯示 rw-r--r--,不應與該分配清單混淆。任何外部遞歸策略都必須在此路由之外進行驗證,包括目標選擇、連結處理以及放置在不同物件類型上的最終模式。
這不包括什麼 - 目錄上的粘性和 setgid 行為以及 ACL 掩碼,這些內容在他們自己的帖子中介紹
Sticky、setgid 和 ACL 遮罩與普通遍歷問題是分開的。這個計算器確實實現了 Sticky 和setgid 表示以及目標敏感的解釋,但本文的核心比較只需要讀取和執行。 ACL 遮罩根本不表示。正確的基本模式轉換無法確定附加條目是授予還是限制特定身分的存取權限。
Umask 也在測試之外。該頁面接受已完成的模式,而不是其先前的流程設定。如果出現具有 644 的目錄,則轉換器可以顯示缺少的執行位置並為另一個提供的值產生候選命令。它無法說明為什麼會出現這種模式,所有權是否錯誤,或改變它是否解決了真正的失敗。
重點:目錄需要 x 才能使用 - 且計算器將 644 和 755 之間的差異顯示為 r-- 與 r-x
持久的結論是目錄 x 在此計算器的解釋中代表條目和基於名稱的可及性。模式 644 顯示群組和其他的 r--,而 755 顯示兩者的 r-x 並新增擁有者執行。同步的八進制域、符號域、矩陣和散文使得這種區別可以檢查,而無需將任何一個熟悉的數字視為普遍正確。
在應用任何內容之前先進行算術以外的診斷。確認相關身分、所有權、每位祖先提供的模式以及目標類型。然後使用計算器驗證任何已完成的候選值。它將拒絕格式錯誤的符號並準確顯示哪些位元發生了變化,但它永遠不會打開路徑、執行 chmod、評估應用程式策略或證明傳統模式位元是唯一的權威。