Umask

Linux中umask是如何計算的?

  • April 1, 2019

所以我知道umask可以限制特權使用者,使用這種格式umask ugo

我知道 read = 4、write = 2 和 exec = 1。但是,當我輸入 時umask,它返回 4 位數字,即0022or 0073。我現在不知道這是如何工作的,因為有一個額外的數字。那個多餘的數字是什麼0022意思?

假設預設遮罩 0666。0022 umask將使新遮罩 0644 (0666-0022=0644) 意味著該組和其他人具有讀取(無寫入或執行)權限。

“額外”數字(第一個數字 = 0)表示沒有特殊模式。

如果模式以數字開頭,它將被解釋為八進制,否則它意味著是符號。

0 是一個數字,1(對於粘性位)或 6(對於 SGID)也是如此。諸如chmod可以通過其他方法呼叫的命令,例如chmod ug+rw mydir您將在其中向使用者和組添加讀取和寫入權限的位置。請注意,這種情況下的模式 (ug+rw) 不是以數字開頭,因此不會被解釋為八進製而是符號。

有關符號,請參閱en.wikipedia.org/wiki/Chmod#Symbolic_examples以及有關特殊模式的www.lifeaftercoffee.com/2007/03/20/special-permission-modes-in-linux-and-unix/

我不知道你會用 揭露第一位umask,但從技術上講你可以。它可以解釋為什麼您幾乎總是將其視為零。

歸功於pinkfloydx33

遮罩的第一個數字處理不太適合所有者/組/其他模型的特殊權限。當為文件權限提供四位數字時,第一位指的是那些特殊值:

4000 = SUID
2000 = SGID
1000 = sticky bit

SUID 位是 set-user-ID 的縮寫,它使可執行程序以所有者的有效使用者 ID (uid) 執行——換句話說,無論誰執行它,程序都以所有者的權限執行。這在執行需要 root 權限但旨在由普通使用者執行的程序中很常見:passwd就是一個這樣的例子。

SGID 位是 set-group-ID 的縮寫,非常相似,但使用所有者的有效id (gid) 執行。

粘性位有點複雜,如果您想了解更多資訊,可以閱讀sticky.

這些位也可以與目錄一起使用,但它們的含義會發生變化。

我不相信您實際上可以將 設置umask為允許您在預設情況下啟用任何這些額外的位,但您可能永遠都不想這樣做。

歸功於user470379

引用自:https://unix.stackexchange.com/questions/84676