Linux下建立文件和目錄時,系統會爲他們賦予默認的權限,而默認的權限則由 umask 的值決定(umask 的默認設置,能夠在 /etc/profile 這個文件中找到)。在終端下輸入 umask 指令,則會顯示如下內容:bash
[root@localhost ~]# umask 0022
不一樣的用戶 umask 的默認值不同,上面顯示的 0022 表明了 root 用戶的 umask 默認值。4個數字分別表示:code
第1位:特殊權限(SUID、SGID、SBIT)class
第2位:文件擁有者權限file
第3位:文件擁有者組權限終端
第4位:其它用戶權限權限
在權限默認屬性上,Linux的文件和目錄是不同的。文件默認是沒有x權限,即默認最大權限爲rw,最大值爲666;目錄默認最大權限爲rwx,最大值爲777。所以,默認的狀況下,umask 的意義爲:密碼
對應於 root 的 umask 默認值 022文件
注意,不要直接用數字相減。好比 umask 的值爲 033,若用數字相減,則建立文件時默認值爲633,文件就有執行權限了,這樣是不對的。co
特殊權限數字
上面提到 umask 的值的第1位數字表示特殊權限(SUID、SGID、SBIT),那什麼是特殊權限呢?Linux系統的用戶密碼是保存在 /etc/shadow 這個文件中的,咱們看一下這個文件的權限
[root@localhost ~]# ll /etc/shadow ----------. 1 root root 1293 12月 22 15:29 /etc/shadow
上面顯示這個文件只能 root 用戶纔有修改權限。可是平時普通用戶執行 /usr/bin/passwd 指令是能夠正常修改密碼的,這不是和Linux的文件權限出現衝突了嗎?這時候特殊權限就派上用場了。看一下 /usr/bin/passwd 命令的權限
[root@localhost ~]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
上面出現了一個s權限,這就是特殊權限SUID。它的意思是 /usr/bin/passwd 指令在運行時,暫時獲取到該文件擁有者的權限(這裏是root),因此修改密碼時才能成功保存到 /etc/shadow 文件中。