很顯然,系統中各種文件的權限設置對特定用戶的數據安全有很大影響。但是要求用戶逐一明確設置系統中每個文件的權限也是不現實的,為此,需要使用umask命令,該命令可以為用戶賬號中新文件的創建進行缺省設置。系統管理員必須要為你設置一個合理的u m a s k值,以確保你創建的文件具有所希望的缺省權限,防止其他非同組用戶對你的文件具有寫權限。具體來說,umask是用來設置權限掩碼的,權限掩碼由3個數字組成,將現有的存取權限減掉權限掩碼后,即可產生建立文件時默認的權限。
語 法:umask [-S][權限掩碼]
補充說明:umask可用來設定[權限掩碼]。[權限掩碼]是由3個八進制的數字所組成,將現有的存取權限減掉權限掩碼后,即可產生建立文件時預設的權限。
參 數:
-S 以文字的方式來表示權限掩碼。
登錄之后,可以按照個人的偏好使用u m a s k命令來改變文件創建的缺省權限。相應的改變直到退出該s h e l l或使用另外的u m a s k命令之前一直有效。一般來說,u m a s k命令是在/ e t c / p r o f i l e文件中設置的,每個用戶在登錄時都會引用這個文件,所以如果希望改變所有用戶的u m a s k,可以在該文件中加入相應的條目。如果希望永久性地設置自己的u m a s k值,那么就把它放在自己$ H O M E目錄下的. p r o f i l e或. b a s h _ p r o f i l e文件中。
如何計算umask值
u m a s k命令允許你設定文件創建時的缺省模式,對應每一類用戶(文件屬主、同組用戶、其他用戶)存在一個相應的u m a s k值中的數字。對於文件來說,這一數字的最大值分別是6。系統不允許你在創建一個文本文件時就賦予它執行權限,必須在創建后用c h m o d命令增加這一權限。目錄則允許設置執行權限,這樣針對目錄來說, u m a s k中各個數字最大可以到7。該命令的一般形式為:
umask nnn
其中n n n為u m a s k置0 0 0 - 7 7 7。
計算u m a s k值:可以有幾種計算u m a s k值的方法,通過設置u m a s k值,可以為新創建的文件和目錄設置缺省權限。
例如,對於u m a s k值0 0 2,相應的文件和目錄缺省創建權限是什么呢?
第一步,我們首先寫下具有全部權限的模式,即7 7 7 (所有用戶都具有讀、寫和執行權限)。
第二步,在下面一行按照u m a s k值寫下相應的位,在本例中是0 0 2。
第三步,在接下來的一行中記下上面兩行中沒有匹配的位。這就是目錄的缺省創建權限。稍加練習就能夠記住這種方法。
第四步,對於文件來說,在創建時不能具有文件權限,只要拿掉相應的執行權限比特即可。
這就是上面的例子,其中u m a s k值為0 0 2:
1) 文件的最大權限rwx rwx rwx (777)
2) umask值為0 0 2 - - - - - - -w-
3) 目錄權限rwx rwx r-x (775) 這就是目錄創建缺省權限
4) 文件權限rw- rw- r-- (664) 這就是文件創建缺省權限
系統默認的umask碼是0022也就是:目錄 755(rwx,rx,rx) ,文件:644(rw,r,r) 。
umask碼的換算
0022 + 0755 = 0777 對應默認目錄權限 反之 0777 - 0755 = 0022
0022 + 0644 +0111 = 0777 對應默認文件權限 反之 0777 - 0111 - 0644 = 0022
哈哈~~ 簡單吧!假如我們要將默認目錄權限設置為 744 那么對應的umask 是 0777 - 0744 = 0033 ,然后執行umask 0033命令就將umask碼改成0033了。
下面是另外一個例子,假設這次u m a s k值為0 2 2:
1) 文件的最大權限rwx rwx rwx (777)
2 ) u m a s k值為0 2 2 - - - -w- -w-
3) 目錄權限rwx r-x r-x (755) 這就是目錄創建缺省權限
4) 文件權限rw- r-- r-- (644) 這就是文件創建缺省權限
下面是常用的u m a s k值及對應的文件和目錄權限
umask值 目錄 文件
0 2 2 7 5 5 6 4 4
0 2 7 7 5 0 6 4 0
0 0 2 7 7 5 6 6 4
0 0 6 7 7 1 6 6 0
0 0 7 7 7 0 6 6 0
如果想知道當前的umask 值,可以使用u m a s k命令:如果想要改變u m a s k值,只要使用u m a s k命令設置一個新的值即可:
$ umask 002
確認一下系統是否已經接受了新的u m a s k值:在使用u m a s k命令之前一定要弄清楚到底希望具有什么樣的文件/目錄創建缺省權限。否則可能會得到一些非常奇怪的結果;例如,如果將u m a s k值設置為6 0 0,那么所創建的文件/目錄的缺省權限就是0 6 6!除非你有特殊需要,否則沒有必要去管他,系統默認的值“022”umask是用的掩碼,至於掩碼的概念,從基礎學吧,這里不說了。
linux中的文件/目錄許可是用4位八進制數表示的。其中第一個八進制數用來表示特殊許可設置,第二個數字用來設置文件所有者的許可,第三個數字用來設置組許可,第四個數字用來設置所有人的許可。
例如,root的權限為777,若權限掩碼設為022,那么兩都相減后可得755。下面是在我的系統更改umask的一些情況:
[root@linuxserver root]# umask
022
上述命令顯示表示我的系統的umask值為022。
[root@linuxserver root]# umask -S
u=rwx,g=rx,o=rx
當umask值為022時,默認情況下各用戶的權限。注意這里的參數“S”是大寫。
[root@linuxserver root]# umask 177
[root@linuxserver root]# umask -S
u=rw,g=,o=
上述兩行命令把umask值改為177,結果只有文件所有者具有讀寫文件的權限,其它用戶不能訪問該文件。這顯然是一種非常安全的狀態。