Linux umask與文件默認權限

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 的意義爲:密碼

  • 若用戶建立的是文件,則要在 rw 權限中減去 umask 對應的權限
  • 若用戶建立的是目錄,則要在 rwx 權限中減去 umask 對應的權限

對應於 root 的 umask 默認值 022文件

  • 建立文件時,文件默認的權限爲:(rw-rw-rw-)-(----w--w-)=(rw-r--r--)
  • 建立目錄時,目錄默認的權限爲:(rwxrwxrwx)-(----w--w-)=(rwx-r-xr-x)

注意,不要直接用數字相減。好比 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 文件中。

相關文章
相關標籤/搜索