Linux新建文件和目錄的默認權限 - Umask

建立新文件的權限UMASK

咱們建立文件的默認權限是怎麼來的?如何改變這個默認權限呢? 答案是umask?   安全

當咱們登陸系統以後建立一個文件老是有一個默認權限的,那麼這個權限是怎麼來的呢?這就是umask乾的事情。umask設置了用戶建立文件的默認權限,它與chmod的效果恰好相反,umask設置的是權限「補碼」,而chmod設置的是文件權限碼bash

 

如何計算umask值? ui

umask命令容許你設定文件建立時的缺省模式,對應每一類用戶(文件屬主、同組用戶、其餘用戶)存在一個相應的umask值中的數字。 spa

對於文件來講,這一數字的最大值分別是6。 test

系統不容許你在建立一個文本文件時就賦予它執行權限,必須在建立後用chmod命令增長這一權限。 登錄

目錄則容許設置執行權限,這樣針對目錄來講,umask中各個數字最大能夠到7。 file

該命令的通常形式爲:umask nnn (其中nnn爲umask置000 - 777) 權限

咱們只要記住u m a s k是從權限中「拿走」相應的位便可語法

如:umask值爲022,則默認目錄權限爲755,默認文件權限爲644二進制

 

下表是umask值與權限的對照表:

umask 文件 目錄

--------------------

0 6 7

1 6 6

2 4 5

3 4 4

4 2 3

5 2 2

6 0 1

7 0 0

--------------------

umask通常在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中設置,因爲profile的讀取有必定的順序:
/etc/profile->$HOME/.profile->$HOME/.bash_profile,因此在.profile裏面設置的umask會被後面的profile覆蓋了,推薦設置在$HOME/.bash_profile

 

 

 

umask 命令介紹


功能說明:指定在創建文件時預設的權限掩碼。
語 法:umask [-S][權限掩碼]
補充說明:umask可用來設定[權限掩碼]。[權限掩碼]是由3個八進制的數字所組成,將現有的存取權限減掉權限掩碼後,便可產生創建文件時預設的權限。
參 數:
-S 以文字的方式來表示權限掩碼。

文件:用八進制基數666,即無x位(可執行位)rw- rw- rw-.執行位需由用戶自行加入

例一:設要生成的文件以rw- r-- r--這樣的權限字出現,即真實權限用八進制表示爲644,則被666基數減得022,022即掩碼。使用umask 022。

注:033效果與022同樣,假設使用033掩碼進行設置,則真實權限應爲633即rw- r-x r-x ,但前提規定文件不生成x位,因此文件的權限最終將以rw-r--r--出現。

目錄:用八進制基數777

例二:設要生成的目錄權限以rwxr-xr-x這樣的權限字出現,即真實權限用八進制表示爲755,則被基數爲777的權限字相減後,得掩碼022。則使用umask 022進行設置。

總結:

掌握二個要點,1、文件基數爲666,目錄爲777,即文件無設x位,目錄可設x位。2、chmod是設哪一個位,哪麼哪一個位就有權限,而umask是設哪一個位,則哪一個位上就沒權限。

 

 

LINUX UMASK詳解

一 權限掩碼umask

umask是chmod配套的,總共爲4位(gid/uid,屬主,組權,其它用戶的權限),不過一般用到的是後3個,例如你用chmod 755 file(此時這文件的權限是屬主讀(4)+寫(2)+執行(1),同組的和其它用戶有讀寫權限)

二 umask的做用

默認狀況下的umask值是022(能夠用umask命令查看)

此時你創建的文件默認權限是644(6-0,6-2,6-2),

創建的目錄的默認權限是755(7-0,7-2,7-2),

能夠用ls -l驗證一下哦 如今應該知道umask的用途了吧,

它是爲了控制默認權限,不要使默認的文件和目錄具備全權而設的

三 修改umask值

知道了umask的做用後,你能夠修改umask的值了,例如:umask 024則之後創建的文件和目錄的默認權限就爲642,753了

四 將umask值保存到環境文件

若要長期修改umask的值,能夠把它寫進/etc/profile或~/.profile或~/.bash_profile中,你們應該知道這幾個文件是幹什麼用的吧。

您知道當你創建一個新的檔案或目錄時,他的預設屬性會是什麼嗎?呵呵!那就與 umask 有關了!那麼 umask 是在搞什麼呢?

基本上, umask 就是指定『目前使用者在創建檔案或目錄時候的屬性默認值』,那麼如何得知或設定 umask 呢?他的指定條件以底下的方式來指定

語法:

[root @test root]# umask
0022
[root@vbird test]# umask 002 <==後面接 3 個數字!
[root@vbird test]# umask
0002

說明:查看 umask 數值爲直接輸入 umask 便可,而設定呢?沒錯!就是 umask 以後接三個數字!那麼如何來指定呢?主要仍是跟 Linux 的檔案屬性(那九個屬性, r, w, x )有關的,並且是以分數的那一個關係爲例的,而有底下的規則爲輔:

若使用者創建爲『檔案』則預設『沒有可執行 ( x ) 項目』,亦即只有 rw 這兩個項目,也就是最大爲 666 分

–rw-rw-rw-

若使用者創建爲『目錄』,則因爲 x 與是否能夠進入此目錄有關,所以預設爲全部權限均開放,亦即爲 777 分

drwxrwxrwx
那麼 umask 指定的是『該默認值須要減掉的權限!』由於 r、w、x 分別是 四、二、1 分,因此囉!也就是說,當要拿掉能寫的權限,就是輸入 2 分,而若是要拿掉能讀的權限,也就是 4 分,那麼要拿掉讀與寫的權限,也就是 6 分,而要拿掉執行與寫入的權限,也就是 3 分,這樣瞭解嗎?請問您, 5 分是什麼?呵呵!就是讀與執行的權限啦!

 

若是以上面的例子來講明的話,由於 umask 爲 002 ,因此 user, group 並無被拿掉屬性,不過 others 的屬性被拿掉了 2 ( 也就是 w 這個屬性 ),那麼因爲當使用者:
創建檔案時:(-rw-rw-rw-) – (——–w-) ==> -rw-rw-r–
創建目錄時:(drwxrwxrwx) – (——–w-) ==> drwxrwxr-x
不相信嗎?你只要使用 touch test 而後看看這個 test 的檔案屬性,就能夠知道了!那麼如何看你這個使用者目前的 umask呢?直接下達 umask 便可!實做看看先:
[root@vbird test]# umask
0002
[root@vbird test]# touch test1
[root@vbird test]# mkdir test2
[root@vbird test]# ls -l
-rw-rw-r– 1 root root 0 Oct 22 00:00 test1
drwxrwxr-x 2 root root 4096 Oct 22 00:00 test2/

發現了什麼?呵呵! Test1 的屬性爲 666-002 = 664 !正確嗎?是的!正確!而 test2 這個目錄呢?就是 777-002 = 775 !也正確!

[root@vbird test]# umask 003
[root@vbird test]# touch test3
[root@vbird test]# mkdir test4
[root@vbird test]# ll
-rw-rw-r– 1 root root 0 Oct 22 00:03 test3
drwxrwxr– 2 root root 4096 Oct 22 00:03 test4/

嘿!屬性又跟剛剛的不同囉!仔細推敲一下爲何呦!test3 666-003 =663,這是怎麼一回事?! 663 應該是 -rw-rw–wx 纔對啊!怎麼會是上面的屬性!呵呵!這裏就要特別的給他強調了!『儘可能不要以數字相加減啦!』容易形成相似上面的問題!你應該要這樣想(-rw-rw- rw-) – (——–wx)=-rw-rw-r–這樣就對啦!瞭解了嗎?不要用十進制的數字喔!夠能力的話,用二進制來算,不曉得的話,用 rwx 來算喔!

由上面的例子您應該很輕易的就能夠發現 umask 的用途!而這個 umask 能夠在 /etc/bashrc 裏面進行修改喔!預設的狀況之下, root 的 umask 爲 022 而通常使用者則爲 002 ,由於可寫的權限蠻嚴重的,所以預設都會拿掉這個權限!此外,由於 root 比較重要!因此爲了安全的需求,其同羣組的寫入屬性就被拿掉了!這東西對於安全性也有必定程度的貢獻呦!

例如,對於u m a s k值0 0 2,相應的文件和目錄缺省建立權限是什麼呢? 第一步,咱們首先寫下具備所有權限的模式,即7 7 7 (全部用戶都具備讀、寫和執行權限)。 第二步,在下面一行按照u m a s k值寫下相應的位,在本例中是0 0 2。 第三步,在接下來的一行中記下上面兩行中沒有匹配的位。這就是目錄的缺省建立權限。 稍加練習就可以記住這種方法。 第四步,對於文件來講,在建立時不能具備文件權限,只要拿掉相應的執行權限比特即 可。 這就是上面的例子,其中u m a s k值爲0 0 2: 1) 文件的最大權限rwx rwx rwx (777) 2) umask值爲0 0 2 – - – - – - -w- 3) 目錄權限rwx rwx r-x (775) 這就是目錄建立缺省權限 4) 文件權限rw- rw- r– (664) 這就是文件建立缺省權限 下面是另一個例子,假設此次u m a s k值爲0 2 2: 1) 文件的最大權限rwx rwx rwx (777) 2 ) u m a s k值爲0 2 2 – - – -w- -w- 3) 目錄權限rwx r-x r-x (755) 這就是目錄建立缺省權限 4) 文件權限rw- r– r– (644) 這就是文件建立缺省權限

相關文章
相關標籤/搜索