umask值與Linux中文件和目錄權限的關系


版權聲明:

###########################################################################

本文的所有內容均來自作者劉春凱的學習總結,未經本人許可,禁止私自轉發及使用。

QQ:1151887353

E-mail:dakai517@163.com      1151887353@qq.com

##########################################################################

 第1章 umask值與文件和目錄的權限

1.1 -R參數設置目錄權限(chmod)

 

1.2 權限字母說明

 

 

1.3 umask說明

1、umask的值決定着文件和目錄的權限,創建文件默認最大權限為666 (-rw-rw-rw-),默認創建的文件沒有可執行權限x位。

2、對於文件來說,umask的設置是在假定文件擁有八進制666的權限上進行的,文件的權限就是666減去umask(umask的各個位數字也不能大於6,如,077就不符合條件)的掩碼數值;重點在接下來的內容,如果umask的部分位或全部位為奇數,那么,在對應為奇數的文件權限位計算結果分別再加1就是最終文件權限值。

創建目錄默認最大權限777(-rwx-rwx-rwx),默認創建的目錄屬主是有x權限,允許用戶進入。

對於目錄來說,umask的設置是在假定文件擁有八進制777權限上進行,目錄八進制權限777減去umask的掩碼數;

3、umask越小,文件和目錄的權限越大,默認的umask值為022,即在主和組都是root時,文件和目錄的權限為644(-rw-r--r--)和755(drwxr-xr-x);

 

4、先設置umask的值,如umask 222 然后再mkdir d222,touch f222,然后再ll=ls -l,這樣umask值才會生效;

5、umask值的控制腳本

 

6、umask博文網址

 http://oldboy.blog.51cto.com/2561410/1060032

1.4 通過umask值讀取文件和目錄權限的三種方法

1.4.1 加減法推算(簡單好用,推薦)

文件權限的一般計算方法:

默認文件權限計算方法

1)假設umask值為:022(所有位為偶數)

6 6 6     ==>文件的起始權限值

0 2 2 -    ==>umask的值

---------

6 4 4

2)假設umask值為:045(其他用戶組位為奇數)

6 6 6     ==>文件的起始權限值

0 4 5 -    ==>umask的值

---------

6 2 1   ==>計算出來的權限。由於umask的最后一位數字是5,所以,在其他用戶組位再加1。

0 0 1 +

---------

622 ==>真實文件權限


默認目錄權限計算方法

 7 7 7     ==>目錄的起始權限值

 0 2 2 -    ==>umask的值

---------

 7 5 5

 

      

 

實例1-1 :umask所有位全為偶數時

[root@oldboy oldboy]# umask

0022 #→umask當前數值

[root@oldboy oldboy]# umask 044 #→更改為044

[root@oldboy oldboy]# umask

0044

[root@oldboy oldboy]# mkdir umask_test #→建目錄測試

[root@oldboy oldboy]# ls -ld umask_test

drwx-wx-wx 2 root root 4096 Nov 12 19:21 umask_test #→對應數字權限為733,是不是符合上面的計算方法?

[root@oldboy oldboy]# touch umask_test.txt

[root@oldboy oldboy]# ls -l umask_test.txt

-rw--w--w- 1 root root 0 Nov 12 19:21 umask_test.txt #→對應數字權限為622,是不是符合上面的計算方法

 

實例1-2 umask值的部分或全部位為奇數時

[root@oldboy oldboy]# umask 0023

[root@oldboy oldboy]# mkdir dir

[root@oldboy oldboy]# touch file

[root@oldboy oldboy]# ls -l

總計 4

drwxr-xr-- 2 root root 4096 11-15 01:04 dir  #→對應數字權限為754

-rw-r--r-- 1 root root    0 11-15 01:04 file #→對應數字權限為644

提示:根據前面的計算方法,當umask為0023時,dir的權限應該是754,而file的權限應該為643,但是由於umask的其他組位為奇數,因此最終權限為其他組位加1,即643加001(對應實踐結果644)。注意:umask為偶數的位不要加1

 

實例1-3 umask值的所有位為奇數時

[root@oldboy oldboy]# umask 0551

[root@oldboy oldboy]# umask

0551

umask 為0551 根據掩碼方法計算:目錄權限為226,文件權限115,而實際文件權限為226(umask的三個權限位都是奇數,所以,每個位分別加1就是正確的權限)

[root@oldboy oldboy]# mkdir dir5

[root@oldboy oldboy]# touch file5

[root@oldboy oldboy]# ls -l

總計 4

d-w--w-rw- 2 root root 4096 11-15 01:27 dir5  #→目錄對應數字權限為226

--w--w-rw- 1 root root    0 11-15 01:27 file5 #→目錄對應數字權限為226

再來一例驗證下:

[root@oldboy oldboy]# umask 0333

[root@oldboy oldboy]# umask

0333

umask 為0333 根據掩碼方法計算:目錄權限為444,文件權限333,而實際文件權限為444(umask的三個位都是奇數,所以,每個位分別加1就是正確的權限)

[root@oldboy oldboy]# mkdir dir3

[root@oldboy oldboy]# touch file3

[root@oldboy oldboy]# ls -l|grep 3

dr--r--r-- 2 root root 4096 11-15 01:30 dir3  #→目錄對應數字權限為444

-r--r--r-- 1 root root    0 11-15 01:30 file3 #→目錄對應數字權限為444

 

1.4.2 通過8進制字母符號計算

[root@oldboy oldboy]# umask 551

umask值為551,對應的權限為-r-xr-x--x,即所有的文件和目錄都取消權限中的-r-xr-x--x權限。

文件權限:【-rw-rw-rw-】-【-r-xr-x--x】=【--w--w--rw-】=226(文件的x位上沒有x,就不用取消了)

目錄權限:【-rwxrwxrwx】-【-r-xr-x--x】=【--w--w--rw-】=226(目錄的x位上有x,直接取消即可)

繼續拿前面的例子驗證:

[root@oldboy oldboy]# umask 333

umask值為333,對應的權限為-wx-wx-wx,即所有的文件和目錄都取消權限中的-wx-wx-wx權限。

文件權限:【-rw-rw-rw-】-【-wx-wx-wx】=【-r--r--r--】=444(文件的x位上沒有x,就不用取消了)

目錄權限:【-rwxrwxrwx】-【-wx-wx-wx】=【-r--r--r--】=444(目錄的x位上有x,直接取消即可)

1.4.3 通過二進制方法計算(二進制轉換軟件)

0022

0    2   2      

----------    #→八進制轉換二進制

0    10   10

說明:把umask值八進制轉換成二進制

 

6    6    6

------------  #→八進制轉換二進制

110 110  110

說明:把文件默認最大權限值八進制轉換成二進制

  0  10  10      #→umask二進制

-------------      #→與運算

110 110  110      #→文件最大權限二進制

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

000 010  010

-------------      #→轉換八進制

  0  2   2

說明:最后得到的值是022,然后使用666減去022,那么文件的創建權限就是644

[root@oldboy oldboy]# umask 551

[root@oldboy oldboy]# umask

0551

5    5     1

-------------      #→轉換二進制

101  101 001     #→umask二進制

-------------      #→與運算

110  110  110      #→文件最大權限二進制

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

100  100  000

-------------      #→轉換八進制

4    4    0

說明:最后得到的值是440,然后使用666減去440,那么文件的創建權限就是226。

 

1.5 企業各服務器之間的權限說明


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM