一、umask介紹
在linux系統中,我們創建一個新的文件或者目錄的時候,這些新的文件或目錄都會有默認的訪問權限,umask命令與文件和目錄的默認訪問權限有關。若用戶創建一個文件,則文件的默認訪問權限為 -rw-rw-rw- ,創建目錄的默認權限 drwxrwxrwx ,而umask值則表明了需要從默認權限中去掉哪些權限來成為最終的默認權限值。
二、umask值的含義
可以使用命令 umask 來查看umask值,每台主機可能會不一樣
[root@zabbix-server-center ~]# umask
0022
可以看到umask值為0022,其中第一個0與特殊權限有關,可以暫時不用理會,后三位022則與普通權限(rwx)有關,其中022中第一個0與用戶(user)權限有關,表示從用戶權限減0,也就是權限不變,所以文件的創建者的權限是默認權限(rw),第二個2與組權限(group)有關,表示從組的權限減2,所以群組的權限也保持默認權限(r),最后一位2則與系統中其他用戶(others)的權限有關,由於w=2,所以需要從其他用戶默認權限(rw)減去2,也就是去掉寫(w)權限,則其他人的權限為rw - w = r,則創建文件的最終默認權限為 -rw-rw-r-- 。同理,目錄的默認權限為 drwxrwxrwx ,則d rwx rwx rwx - 022 = (d rwx rwx rwx) - (- --- -w- -w-) = d rwx r-x r-x,所以用戶創建目錄的默認訪問權限為 drwxr-xr-x 。我們通過下面的例子驗證一下:
(1)創建普通文件時:(文件默認權限) (-rw-rw-rw-)-(- --- -w- -w-)=-(rw--r--r-- )
(2)創建目錄時:(文件默認權限)(drwxrwxrwx )-(- --- -w- -w-)=(drwxr-xr-x)
三、更改umask值:umask命令
可以通過命令 umask 值 的方式來更改umask值,比如我要把umask值改為027,則使用命令 umask 027 即可。改成027后,用戶權限不變,群組權限減掉2,也就是去掉寫(w)權限,其他用戶減7,也就是去掉讀寫執行權限(rwx),所以其他用戶沒有訪問權限。
[root@zabbix-server-center dir]# umask 0027 #更新設置umask值為0027
[root@zabbix-server-center dir]# umask
0027
[root@zabbix-server-center dir]# touch 2.txt
[root@zabbix-server-center dir]# ls -ll
總用量 8
-rw-r--r-- 1 root root 0 3月 6 11:05 1.txt
-rw-r----- 1 root root 0 3月 6 16:09 2.txt
drwsrwsr-x 2 root root 6 3月 5 15:59 dir_sgid
-rwsr--r-- 1 root root 15 3月 5 15:37 profile
drwxr-xr-x 2 root root 6 3月 6 16:01 t
-rwxr--r-- 1 alex alex 32 3月 5 14:55 t.sh
所以當我新建文件的時候,默認其它用戶沒有任何權限。當我們想改變創建文件和目錄時的默認訪問權限,則可以通過umask命令來實現。