是否可以用八進位值表示 +X 符號權限? chmod(1) 手冊頁顯示:
僅當檔案是目錄或已具有某些使用者的執行權限時才執行/搜尋
這表示chmod -R g+X
僅當已經為使用者、群組或其他設定了執行位元時才會新增群組執行權限。你當然可以用 find 來做到這一點:
find . -perm /ugo=x -exec chmod g+x {} \;
然而,如何在不使用八進制模式的情況下完成相同的事情並不明顯尋找或者測試首先檢查檔案權限。這是否可能,或者是否存在符號和八進制權限不重疊的某些區域?
答案1
簡短的故事:這是不可能的,不是。
更長的故事:八進制權限是狀態。此[+-][rwxXst]
符號代表operations
狀態變化的最終結果。注意,不是那個=[rwxXst]
,套狀態並且相當於吉爾斯所說的八進位模式。其中X
一個是唯一有條件的操作,其他都是無條件的。
當您的chmod
文件具有八進制權限時,您提供最終的狀態逐字許可位。當你使用操作時,你選擇你想要的完畢到權限位。
你的問題相當於問是否有一個數字可以代表所有的平方根。答案顯然是否定的:每個平方根產量一個數字(學究:雖然它可能是虛數/無理數),但沒有開頭狀態(數字),你無法分辨是哪一個。
答案2
符號模式比八進位模式更具表現力,因為八進位模式只能表達絕對變化。相對變化,不僅意味著+X
任何不指定所有新位元的模式(例如g+x
— 甚至a+rwx
,不刪除任何 setuid/setgid 位元)都不能用八進位模式表示。
相反,任何八進位模式都可以表示為符號模式,通常透過使用=
,例如4750
= u+rwxs,g=rx,o-rwxt
(或u=rwxs,g=rx,o=
或許多其他組合)。