修改linux默認文件創建權限-umask命令解析


  umask值用於設置用戶在創建文件時的默認權限,當我們在系統中創建目錄或文件時,目錄或文件所具有的默認權限就是由umask值決定的。

  對於root用戶,系統默認的umask值是0022;對於普通用戶,系統默認的umask值是0002。執行umask命令可以查看當前用戶的umask值。

1 [frank@frankserver ~]# umask
2 
3 0022

  umask值一共有4組數字,其中第1組數字用於定義特殊權限,我們一般不予考慮,與一般權限有關的是后3組數字。

  默認情況下,對於目錄,用戶所能擁有的最大權限是777;對於文件,用戶所能擁有的最大權限是目錄的最大權限去掉執行權限,即666。因為x執行權限對於目錄是必須的,沒有執行權限就無法進入目錄,而對於文件則不必默認賦予x執行權限。

  對於root用戶,他的umask值是022。當root用戶創建目錄時,默認的權限就是用最大權限777去掉相應位置的umask值權限,即對於所有者不必去掉任何權限,對於所屬組要去掉w權限,對於其他用戶也要去掉w權限,所以目錄的默認權限就是755;當root用戶創建文件時,默認的權限則是用最大權限666去掉相應位置的umask值,即文件的默認權限是644。

  可以通過下面的測試操作來了解umask值。

 1 [frank@frankserver ~]# mkdir directory1 #創建測試目錄
 2 
 3 [frank@frankserver ~]# ll -d directory1 #目錄的默認權限是755
 4 
 5 drwxr-xr-x. 2 root root 4096 5月 8 13:08 directory1
 6 
 7 [frank@frankserver ~]# touch file1 #創建測試文件
 8 
 9 [frank@frankserver ~]# ll file1 #文件的默認權限是644
10 
11 -rw-r--r--. 1 root root 0 5月 8 13:09 file1

  通過umask命令可以修改umask值,比如將umask值設為0077。

1 [frank@frankserver ~]# umask 0077
2 
3 [frank@frankserver ~]# umask
4 
5 0077

  此時創建的目錄默認權限為700,文件默認權限是600:

 1 [frank@frankserver ~]# mkdir directory2
 2 
 3 [frank@frankserver ~]# ll -d directory2
 4 
 5 drwx------. 2 root root 4096 5月 8 13:14 directory2
 6 
 7 [frank@frankserver ~]# touch file2
 8 
 9 [frank@frankserver ~]# ll file2
10 
11 -rw-------. 1 root root 0 8月 8 13:14 file2

  考慮一下,如果將umask值設為0003,那么此時創建的目錄或文件的默認權限是多少?

  正確的結果應該是:目錄的默認權限是774,文件的默認權限是664。在計算默認權限時,不應用最大權限直接減去umask值,而是將umask值所對應的相應位置的權限去掉,這樣才能得到正確的結果。

  umask命令只能臨時修改umask值,系統重啟之后umask將還原成默認值。如果要永久修改umask值,需要修改/etc/profile文件或是修改/etc/bashrc文件,例如要將默認umask值設置為027,那么可以在文件中增加一行“umask 027”。

  /etc/profile和/etc/bashrc都可以用於設置用戶登錄系統時自動執行某些操作,他們的區別是/etc/profile只在用戶第一次登錄時被執行,而/etc/bashrc則在用戶每次登錄加載Bash Shell時都會被執行。

  因而,如果是修改/etc/profile文件,將只對新創建的用戶生效;而如果是修改/etc/bashrc文件,則對所有用戶都生效。


免責聲明!

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



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