Linux文件默認權限的計算方式umask
最近在看《鳥叔的Linux私房菜》,因為他是台灣人,所以表達方式和大陸這邊不太一樣,台灣人所說的檔案基本上就等於我們所說的文件。
在Linux下新建文件的時候,不用我們設置權限,就會有一個默認的權限。這個默認權限是怎麼出來的呢,是根據預設權限和umask來的。
文件的預設權限是-rw-rw-rw- 也就是666分,目錄的預設權限是drwxrwxrwx也就是777分,什麼是umask呢?umask就是配合預設權限計算出默認權限的東西。
直接輸入umask即可查詢你所在的操作系統的umask值,默認的一般是0022,主要看後三位,022,w的分數是2,這就意味著,文件的默認權限就是-rwr- -r- - (644)
可見就是對應的預設權限裡面去掉w權限,因為擁有者對用的數字是0,所以權限不變。
同理,目錄的默認權限也是預設權限去掉022,也就是drwxr-xr-x (755)
到此,文件和目錄的默認權限就出來了。這個umask是可以根據需要自己設置的。命令也很簡單,比如 umask 0003
需要注意的是,不要在預設權限的分數上減掉umask對應的數字,這樣計算出來的結果不一定對!比如檔案的預設權限分數是666,減去003,變成663也就是-rw-rw- -wx
擁有者和群組都沒有執行的權限,但是其他人卻有。。。所以這樣計算是不對的。減去的是權限,不是數字!這個要記住。003,就是去掉w和x權限。
所以正確的結果應該是-rw-rw-r- -,其實這裡的0003和0002的作用是一樣的。002這個umask比較適用於一個小型工作組一起做一個項目,組員對這個項目的檔案都有修改權限。