Linux的文件權限

1 文件權限的表示

  (1)字母表示法

  Linux中所有文件(普通文件、目錄文件、字符特殊文件、塊特殊文件、管道或FIFO、符號鏈接、套接字)都有9個權限,如下圖所示:

  -rw-rw-r--就是文件a的權限了。首先最左邊的-表示了文件類型,如果是目錄的話,就是d;接下來的三位rw-表示了a的用戶(Andy)權限、再接下來的三位rw-表示了a的組(Andy)權限,最後三位代表了其他用戶對文件a的權限。

  每組三個權限位依次代表了文件的讀(r)、寫(w)、執行(x)權限。如果某一位上是-就代表着該位不具有某一權限。

  (2)數字表示法

  Linux允許以數字來代表文件的權限,r爲4,w爲2,x爲1。則上述的4的權限爲(4+2)(4+2)(4)=664。

2 更改權限

  (1)字母法

  u、g、o分別代表了文件的用戶權限、組權限、其他用戶權限。我們可以使用chmod命令如下操作:

  chmod u+x a  //賦予用戶執行權限

  chmod o-r a  //取消其他用戶讀權限

  這樣a的權限就變成了-rwxrw----,也就是740

  (2)數字法

  簡單粗暴:直接用你要更改的目標權限的數字:

  chmod 740 a

3 默認權限

  新建一個普通文件或目錄,它們的默認權限是怎麼樣的呢?Linux是有默認值的。我們用umask命令可以獲得: 

  

  這個0002代表什麼意思呢?從名字中我們可以知道,它是一個掩碼來的。也就是用某一個值來減這個值,就獲得了默認權限,對文件來說,是666,目錄來說是777。爲什麼是這樣呢?因爲Linux不允許文件默認是可執行的,所以一個文件默認是不可執行的。那爲什麼umask是4位的呢?第一位是特殊權限位,下邊再講,所以這裏的umask的其他權限位是002,對應文件的默認權限是664,目錄的默認權限是775。

  更改umask,直接umask 777,就可以把umask變成0777

4 特殊權限

  (1)Linux中的文件有三個特殊位:

    SUID:設置用戶ID(set-user-ID)。對一個可執行文件,不是以發起者身份來獲取資源,而是以可執行文件的屬主身份來執行。
    SGID:設置組ID(set-group-ID)。對一個可執行文件,不是以發起者身份來獲取資源,而是以可執行文件的屬組身份來執行。
    STICKY:粘滯位,通常對目錄而言。通常對於全局可寫目錄(other也可寫)來說,讓該目錄具有sticky後,刪除只對屬於自己的文件有效(但是仍能編輯修改別人的文件,除了root的)。不能根據安全上下文獲取對別人的文件的寫權限。

  (2)設置
   #chmod u+s
   #chmod g+s
  同上,去除特殊位有: #chmou u-s  .等

  (3)表示
    SUID:置於 u 的 x 位,原位置有執行權限,就置爲 s,沒有了爲 S .
    SGID:置於 g 的 x 位,原位置有執行權限,就置爲 s,沒有了爲 S .
    STICKY:粘滯位,置於 o 的 x 位,原位置有執行權限,就置爲 t ,否則爲T .

  數字字表示法SUID:4,SGID:2,STICKY:1,特殊權限位於u/g/o之前。例如:對某個目錄:

         #chmod  4551  file  // 權限: r-sr-x--x
         #chmod  2551  file  // 權限: r-xr-s--x
         #chmod  1551  file  // 權限: r-xr-x--t

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章