當我們在系統中新建一個文件或目錄時,系統會自動賦予該文件或目錄一個初始訪問權限,我們稱爲默認權限,默認權限與文件系統的umask值有關。可以在終端下直接輸入 umask來查看當前系統的umask值。例如:
顯示結果中,第一位是特殊權限,我們暫時只考慮後三位即可。即,目前系統的默認權限爲022,那它表示什麼意思呢?
我們知道,x權限對於文件來說,表示能否執行該文件,而對目錄來說,表示能否cd到該目錄。在Linux系統中,出於安全考慮,在不考慮umask的情況下,系統默認設置的權限爲:
新建文件的權限是-rw-rw-rw-,權限值是666;
新建目錄的權限是drwxrwxrwx,權限值是777。
而最終的系統默認權限即是666或777“減去”umask的值,即文件的默認權限爲644,而目錄的默認權限爲755.即:
新建文件時:(-rw-rw-rw-)-(-----w--w-)è(-rw-r--r--)
新建目錄時:(drwxrwxrwx)-(d----w--w-)è(drwxr-xr-x),例如:
而使用umask命令不僅可以查看當前系統的默認權限,也可以設置系統的默認權限,如:
需要注意的是,在計算最終的默認權限時,需要將數值轉換爲rwx的形式再去相減,而不建議直接使用數字666或777相減。
比如在上圖的例子中,umask值爲003,則:
新建文件時:(-rw-rw-rw-)-(--------wx)è(-rw-rw-r--)
新建目錄時:(drwxrwxrwx)-(--------wx)è(drwxrwxr--)
但若使用數字算的話,對於文件來說,666-003=663,其權限變成了-rw-rw--wx,很明顯是不對的。