版權聲明:
###########################################################################
本文的所有內容均來自作者劉春凱的學習總結,未經本人許可,禁止私自轉發及使用。
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。