2013-10-29 67 views
2

我是Linux新手。我正在用umask命令進行一些試驗。我將umask設置爲001,但是當我創建一個文件並顯示一個長列表時,新文件不顯示允許執行權限。我想知道爲什麼?爲什麼umask 001不設置執行權限?

Screenshot

回答

1

umask是有點特殊。設置一點意味着你實際上禁用了權限。它的實現是:

(not umask) & filemode 

文件模式是用戶想要創建的。

所以你禁止執行位:

001 -> complement -> 110 -> rw- 

你想嘗試的面具是110(位)或006(八進制):)

+0

但他對「他人」的一部分這樣做只是... – glglgl

+0

這個umask的*已經*八進制給出... – glglgl

+0

@glglgl這是事實,這是由於無論是創建文件。 Umask可以處理所需的文件權限。但他也不瞭解umask背後的邏輯。 –

1

的umask的告訴哪些位從刪除系統在creat()調用給出的模式位掩碼。 umask通常表示爲八進制數字,每個數字由3位組成(r = 4,w = 2,x = 1)。三個八進制數字表示「用戶」,「組」,「其他」。

它是由程序如果它調用creat與模式666rw-777rwx。在這種情況下,顯然使用666。 (A文件與666,除非它被認爲是正常的可執行創建。在這種情況下,使用777。此計算例如用於編譯器。)

一個非常常見的是umask022(八進制)。它變成666rw-rw-rw-)變成644rw-r--r--)和777rwxrwxrwx)變成755rwxr-xr-x)它們分別是最終應用於文件的文件模式。

您的umask 001只會關閉「其他」組的x位。因此777將變成776rwxrwxrw-)和666停留666rw-rw-rw-)。

+0

謝謝glglgl ....但是,什麼面具可以讓我獲得rwxrwxrw許可的文件?我明白這將是001(八進制) –

+1

@JCNunez只有當創建該文件的程序通過請求模式「0777」支持此操作時。否則,你會用手做。 'python -c'import os,sys; os.close(os.open(sys.argv [1],os.O_CREAT,0777))'123123123'會爲您創建所有模式位設置的文件'123123123'。 umask然後掩蓋它們,你會看到會發生什麼。 – glglgl

相關問題