Linux中的文件默認權限:umask

新建一個新的文件或目錄時,它的默認權限是什麼?就與umask有關了,基本上umask就是指定“目前用戶新建文件或目錄時默認的權限默認值”,那麼如何得知或設置umask呢?它的指定條件以下列的方式來指定:

[root@www ~]#umask
0022       <==與一般權限有關的是後面三位數
[root@www ~]#umask -S
u=rwx,g=rx,o=rx

查看的方式有兩種,一種可以直接輸入umask,就可以看到數字形態的權限設置分數,一種則是加入-S這個參數,就會以符號類型的方式來顯示出權限了,奇怪的是,怎麼umask會有四組數?不應該只有三組嗎?是沒錯,第一組是特殊權限用的,我們先不理他,直接看後面三組即可。

在默認權限屬性上目錄與文件是不一樣的,我們知道x權限對與目錄是非常重要的,但是一般文件創建時則不應該有執行的權限,因爲一般文件通常是用於數據的記錄。當然不需要執行,因此在默認情況如下:

若用戶創建文件則默認沒有可執行x權限,既只有r,w這兩個選項,也就是最大爲666,默認權限爲:

-rw-rw-rw-

若用戶新建目錄時,則由於x與是否可進入此目錄有關,因此默認爲所有權限均開放,既777分,默認權限如下:

drwxrwxrwx

要注意的是,umask的分數指的是該默認值需要減掉的權限,因爲r、w、x分別是4,2,1也就是說,當拿掉能寫的權限,就是輸入2,而如果要拿掉能讀的權限,就是輸入4,要拿掉讀與寫的權限就是6,而要拿掉執行與寫入的權限就是3。什麼是5?    5就是讀與執行的權限。

如果以上面的例子來說明的話,因爲umask爲022,所以user並沒有被拿掉任何權限。不過group、others的權限被拿掉了2,(也就是說w這個權限),那麼當用戶:

新建文件時:(-rw-rw-rw-)-(-----w--w-)==-rw-r--r--

新建目錄時:(drwxrwxrwx)-(d----w--w-)==drwx-r-xr-x

umask的利用與重要性:

如果設定umask爲022的話,那麼新建的數據只有用戶自己具有w權限,同用戶組的人只有r這個可讀的權限而已,並無法修改。這樣怎麼共同製作專題?你說是吧。

所以,當我們需要創建文件給同組的用戶共同編輯專題時,那麼umask的用戶組就不能拿掉2這個w權限。umask就得要是002之類的纔可以,這樣新建文件才能夠使-rw-rw-r--

的權限模樣,那麼如何設置umask呢?直接在umask後面輸入002就可以了。

[root@www ~]#umask 002
[root@www ~]#touch test1
[root@www ~]#mkdir test2
[root@www ~]#ll
-rw-rw-r-- 1 root root        0     Sep  27  00:36  test1
drwxrwxr-x 2 root root        4096  Sep  27  00:36  test2
所以說,這個umask對與新建文件與目錄的默認權限是很有關係的,這個概念可以用在任何服務器上,尤其是你在未來假設文件服務器上。

值得注意的是:

假設你的umask爲003,那麼這種情況下新建的文件和目錄的權限都是什麼?

如果使用默認值相減的話,則文件變成666-003=663,即是-rw-rw-wx,這可是完全不對的,想想看原本文件就拿掉了x的默認屬性,怎麼可能後來又冒出來x的默認屬性,正確的做法應該是:

文件:(-rw-rw-rw-)-(---------wx)=-rw-rw-r--

目錄:(drwxrwxrwx)-(---------wx)=drwxrwxr--

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章