LINUX

LINUX UMASK指令

介紹

umask指令用來顯示檔案(夾)預設權限。

語法

umask [options] [mask]

常用的options

-S  Makes the output symbolic; otherwise an octal number is output.

mask

⤍ umask
0002

在執行umask指令時會得到一個mask值,它又代表著什麼意思呢。在chmod指令中,我們認識到檔案(夾)權限以及它的八進位表示法,其實mask值也是一個八進位的數字,它必須跟權限0666(一般檔案)或權限0777(檔案夾或可執行檔)作NOT AND運算後才會得到對應的權限。

一般檔案因為不是拿來執行的,所以通常會省略執行權限的部份(反正用不到),所以一般檔案給權限0666就已經是最開放了。

假設mask值為0002,則對一般檔案來說,對應到的權限為0664。計算如下:

0666 NOT AND 0002
= 000110110110 NOT AND 000000000010
= 000110110110   AND   111111111101
= 000110110100  // 二進位
= 0664  // 八進位

相同的,對檔案夾或可執行檔則為權限0775。比較快的方法其實可以直接用八進位權限數字減mask值。

範例

你可以顯示檔案(夾)預設權限:

⤍ umask
0002

使用-S來顯示較易讀的權限字串:

⤍ umask -S
u=rwx,g=rwx,o=rx  // 其實就是權限0775

不知道u,g,o代表的意思請閱讀chmod指令教學。

如要更改預設權限,可以直接指定新mask值:

⤍ umask 0022  // 相當於0755

⤍ touch newfile && mkdir newdir  // 建立新檔案及檔案夾來測試

⤍ ls -l newfile newdir  // 查看newfile及newdir的權限
-rw-r--r--  1  mt  ...  newfile
drwxr-xr-x  2  mt  ...  newdir

可以發現新建立的一般檔案權限為0644,而檔案夾為0755

發佈留言