在說文件權限掩碼之前,必須了解下linux下的文件權限,比如在linux下可以通過“ls -l”命令查看文件的權限,輸入后可以獲得如下顯示:
drwxrwxr-x 3 linux linux 4096 Jun 6 18:03 test
在顯示中“drwxrwxr-x”這十個字母中第一個字母‘d‘為文件類型表示目錄,同字段還可以是‘-‘普通文件、‘c’字符設備文件、‘b’塊設備文件、‘l’連接文件、‘s’socket文件和‘p’管道文件。除此之外剩下九個字母,三個一組分別表示文件所有者(owner)對當前文件享有的權限,與文件所有者同用戶組的用戶(group)對文件享有的權限,其他用戶(other)對文件享有的權限。其中‘r’表示可讀、‘w’表示可寫、‘x’表示可執行如果文件類型是目錄而這個位決定能否進入這個目錄。
如上文中
rwx:表示用戶所有者對當前文件有讀寫權限,可執行權限
rwx:表示用戶所有者同組用戶對當前文件有讀寫權限,可執行權限
r-x:表示其他用戶對當前文件有讀權限,可執行權限,沒有寫權限不能修改文件
接下來我們開始說掩碼及掩碼的作用。
在系統中創建文件都有一個默認權限,比如創建普通文件可能是“-rw-rw-rw-”當然寫程序是很多時候寫成“0666”,“-rw-rw-rw-“用一個八進制數據存儲就是“0666”每個權限碼占一位。
而權限掩碼的作用是根據用戶的需求屏蔽掉不希望給別人的權限,比如普通文件的權限是“-rw-rw-rw-”,所有用戶對文件都享有讀寫權限,而這帶來的問題就是文件可以被任何人修改從而導致文件數據被篡改導致數據丟失。這個時候用戶可以通過設置文件掩碼來屏蔽到本需要賦予其他用戶的特定權限。
比如:
文件創建后權限是0666
文件權限掩碼是0022
文件最終的權限是0644
即0666 | 0022 = 0644
權限掩碼在每個linux系統里都有默認值,多數為0022,當然用戶也可以自己修改權限掩碼的值。
修改用戶權限掩碼可在自己用戶目錄下的.bashrc(ubuntu)里添加umask 0022。
貨在終端直接執行命令修改權限掩碼
umask 0022
實例:
umask 0
touch test1
ls -l test1
umask 0022
touch test2
ls -l test2
對比兩次運行結果,可了解umask的作用。