umask值用于設定使用者在建立檔案時的預設權限,當我們在系統中建立目錄或檔案時,目錄或檔案所具有的預設權限就是由umask值決定的。對于root使用者,系統預設的umask值是0022;對于普通使用者,系統預設的umask值是0002。執行umask指令可以檢視目前使用者的umask值
建立檔案并檢視權限
[[email protected] ~]# touch test.txt
[[email protected] ~]# ll test.txt
-rw-r--r--. 1 root root 0 Aug 9 11:04 test.txt
[[email protected] ~]#
rw-r--r--
檔案權限是644
建立檔案夾
[[email protected] ~]# mkdir test
[[email protected] ~]# ls -ld test
drwxr-xr-x. 2 root root 6 Aug 9 11:05 test
[[email protected] ~]#
rwxr-xr-x
檔案權限是755
通過umask就可以确定預設檔案和預設目錄的權限是多少
為什麼我們建立檔案和建立檔案夾權限不一樣呢?因為有umask
[[email protected] ~]# umask
0022
[[email protected] ~]#
更改umask後再看預設檔案和預設目錄是多少
umask值一共有4組數字,其中第1組數字用于定義特殊權限,我們一般不予考慮,與一般權限有關的是後3組數字。(0002 可以簡寫為002)
[[email protected] ~]# umask 0002
[[email protected] ~]# umask
0002
[[email protected] ~]#
建立檔案并檢視權限
[[email protected] ~]# touch test2.txt
[[email protected] ~]# ll test2.txt
-rw-rw-r--. 1 root root 0 Aug 9 11:07 test2.txt
[[email protected] ~]#
rw-rw-r--
檔案權限變成了664
建立目錄并檢視權限
[[email protected] ~]# mkdir test2
[[email protected] ~]# ls -ld test2
drwxrwxr-x. 2 root root 6 Aug 9 11:09 test2
[[email protected] ~]#
rwxrwxr-x
目錄權限變成了775
觀察
預設情況下,對于目錄,使用者所能擁有的最大權限是777;對于檔案,使用者所能擁有的最大權限是目錄的最大權限去掉執行權限,即666。因為x執行權限對于目錄是必須的,沒有執行權限就無法進入目錄,而對于檔案則不必預設賦予x執行權限
更改前後 | umask | 使用者權限 | 組權限 |
---|---|---|---|
更改umask前 | 022 | 644 | 755 |
更改umask後 | 002 | 664 | 775 |
更改umask前:
777 – 022 = 755
666 – 022 = 644
更改umask後:
777 – 002 = 775
666 – 002 = 664
看起來這麼計算沒有一點問題,那麼接下來,我們再試試,看還行不行
接下來把umask改成003
[[email protected] ~]# umask 0003
[[email protected] ~]# umask
0003
[[email protected] ~]#
把之前的所有檔案都删除掉
[[email protected] ~]# ll
total 12
-rw-------. 1 root root 6398 Aug 8 16:10 anaconda-ks.cfg
-rw-------. 1 root root 1257 Aug 8 18:36 anaconda-ks.cfg.bak
drwxr-xr-x. 2 root root 6 Aug 9 11:05 test
drwxrwxr-x. 2 root root 6 Aug 9 11:09 test2
-rw-rw-r--. 1 root root 0 Aug 9 11:07 test2.txt
-rw-r--r--. 1 root root 0 Aug 9 11:04 test.txt
[[email protected] ~]# rm -rf test*
[[email protected] ~]# ll
total 12
-rw-------. 1 root root 6398 Aug 8 16:10 anaconda-ks.cfg
-rw-------. 1 root root 1257 Aug 8 18:36 anaconda-ks.cfg.bak
[[email protected] ~]#
建立檔案并檢視權限
[[email protected] ~]# touch test.txt
[[email protected] ~]# ll test.txt
-rw-rw-r--. 1 root root 0 Aug 9 11:14 test.txt
[[email protected] ~]#
rw-rw-r--
檔案權限是664
建立目錄并檢視權限
[[email protected] ~]# mkdir test
[[email protected] ~]# ls -ld test
drwxrwxr--. 2 root root 6 Aug 9 11:15 test
[[email protected] ~]#
rwxrwxr--
目錄權限是774
如果按剛才的算法就是:
666 – 003 = 663
777 – 003 = 774
而此時我們的檔案權限是664,很明顯,這樣算是不科學的
科學的算法是這樣的
666(rw-rw-rw-)-(-------wx)=(rw-rw-r--)=664
777(rwxrwxrwx)-(-------wx)=(rwxrwxr--)=774