天天看點

2.16-umask

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
           

繼續閱讀