透過字母與數字進行 Chmod

透過字母與數字進行 Chmod

最近,一位同事要求我使用chmod字母而不是數字。除了明顯的可讀性優勢之外,還有什麼特別的理由使用字母而不是數字嗎?

答案1

與八進位表示法相比,符號chmod表示法更加細粒度,允許修改特定模式位,同時保持其他模式位不變。

符號表示法由三個部分組成:

chmod [references][operator][modes] file

references由字母 的組合組成,ugoa指定file將修改哪個使用者的存取權限:擁有該檔案的使用者 ( u)、檔案群組中的其他使用者 ( g)、不在檔案群組中的其他使用者 ( o) 或所有使用者( a)。如果references省略該元件,則預設為所有用戶,但僅修改允許的權限umask

導致+ operator指定的文件模式位元被加入到每個文件的現有文件模式位元中;-導致它們被移除;並=導致添加它們並刪除未指定的位,除非setuid明確setgid指定,否則為目錄設定的位除外。

mode由字母 的組合組成,rwxXst分別對應讀取(r)、寫(w)、執行(或搜尋目錄)(x),僅當檔案是目錄或已具有某些使用者的執行權限時才執行/搜尋(X),setuidsetgid(取決於指定的引用)( s) 和限制刪除標誌或黏滯位元 ( t)。或者, 可以mode由字母 之一組成ugo,在這種情況下, 對應mode於目前授予所有者 ( u)、文件組成員 ( g) 的權限或上述任一類別中的使用者的權限 ( o)。

例子

假設設定的權限file0764/-rwxrw-r--

刪除不在檔案群組中的其他使用者的權限:

  • 八進位:chmod 760 file

    請注意,使用八進位表示法時,必須重複保持不變的現有權限。

  • 象徵性:chmod o-rwx file

    使用符號表示法,現有的檔案權限並不重要。

setuid

  • 八進位:chmod 4764 file

  • 象徵性:chmod u+s file

setgid

  • 八進位:chmod 2764 file
  • 象徵性的chmod g+s file

答案2

使用這些字母可以打開和關閉各個位,而無需更改其他位。

假設我有以下目錄:

drwxrwsr-x   6 f261-01a  g261-01a  4096 Sep 12 17:51 /home/teams/261/f261-01a

如果我想關閉其他人的讀取權限並且我想使用數字,我可能很快就會這樣做chmod 751。只不過我剛剛關閉了目錄上的 setgid 位元。哎呀。

但是,如果我使用chmod o-r,我只會關閉我想要的讀取位,並且目錄上的 setgid 位元保持設定狀態。

如果您想在檔案或目錄上開啟 setuid、setgid 或黏性位,它也很有用。特別是如果你很少這樣做,你就很難記住第四個八位元組中的哪一個。

所以,這取決於你在做什麼。當我只是設定權限並且不關心從什麼開始時,我仍然更喜歡使用數字。但如果您要切換各個位,則字母表示法會容易得多。

相關內容