LINUX

LINUX UMASK指令

介紹

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

語法

umask [options] [mask]
Code language: plaintext (plaintext)

常用的options

-S Makes the output symbolic; otherwise an octal number is output.
Code language: plaintext (plaintext)

mask

⤍ umask 0002
Code language: plaintext (plaintext)

在執行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 // 八進位
Code language: plaintext (plaintext)

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

範例

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

⤍ umask 0002
Code language: plaintext (plaintext)

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

⤍ umask -S u=rwx,g=rwx,o=rx // 其實就是權限0775
Code language: plaintext (plaintext)

不知道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
Code language: plaintext (plaintext)

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

發佈留言