在大多數地方,權限被定義爲格式爲0777
的八進制數。但在我的理解中,UNIX的umask
命令(因此os.umask()
)需要0o000
來產生0o777
和0o022
的權限位等於0o755
。爲什麼os.umask()的參數是倒置的? (umask 0o000使chmod 0o777)
我聽說UNIX的umask
由於某種原因被顛倒過來,我不明白它背後的原因。有人可以解釋這種不一致嗎?
在大多數地方,權限被定義爲格式爲0777
的八進制數。但在我的理解中,UNIX的umask
命令(因此os.umask()
)需要0o000
來產生0o777
和0o022
的權限位等於0o755
。爲什麼os.umask()的參數是倒置的? (umask 0o000使chmod 0o777)
我聽說UNIX的umask
由於某種原因被顛倒過來,我不明白它背後的原因。有人可以解釋這種不一致嗎?
沒有真正的不一致,因爲umask
和chmod
之間的關係可以純粹用方程式寫下來。顯然,umask
設置爲chmod
的對立面,它在過去是這樣創建的。
示例:022
(默認通常爲umask
)創建755
。它的工作原理是這樣的:
7 - 0 = 7
變爲第一字節7 - 2 = 5
變爲第二和第三字節使用這個例子中,umask 777
創建具有chmod 000
一個文件,umask 112
將等於chmod 664
。據我所知,發生這種情況的原因是umask
命令最初創建的目的是爲了說明在文件創建後(因此反轉)文件將具有不是的權限位。
雖然它可能很煩人,但實踐起來並不難。只要想想你會如何chmod
你的文件,並從7
減去你想要的字節,你會得到umask
值。或者,在IDE中編寫代碼時,請勿使用umask
,而應創建該文件(當然,默認爲umask
),然後在Python中使用os.chmod()
。
這是一個「面具」 - 這是這個詞在這方面意味着什麼;這些東西只允許未設置的位通過(考慮用於繪畫,芯片製造等的掩模)。如果它不這樣操作,它會被稱爲別的東西。 –