1. 程式人生 > >Linux檔案目錄許可權、隱藏屬性、特殊許可權

Linux檔案目錄許可權、隱藏屬性、特殊許可權

一、 Linux檔案及目錄許可權概念

1.1 檢視目錄或者檔案的許可權

  “ls -al”命令可以檢視
這裡寫圖片描述

1.2 目錄及檔案許可權分析

從上面的圖中可以看到,目錄或者檔案的屬性欄位為:
  - - - - - - - - - -
從左至右分別表示:檔案的型別、檔案(目錄)擁有者的讀許可權(u)、檔案(目錄)擁有者的寫許可權(w)、檔案(目錄)擁有者的執行許可權(x),後面以此類推分別為所屬組和其他人的對此檔案(目錄)的許可權。

  • 第一個字元-檔案型別
    [d]:目錄
    [-]:檔案
    [l]:連結檔案
    [b]:可隨機儲存裝置
    [c]:一次性讀取裝置(鍵盤、滑鼠等)
  • 三個為一組的許可權
    r:可讀,用數字4表示
    w:可寫,用數字2表示
    x:可執行,用數字1表示
    對於檔案來說
    :r表示可以讀取檔案裡面的內容、w表示可以向檔案寫入內容、x表示可以執行該檔案(前提是該檔案是可執行檔案)。
    對於目錄來說:r表示可以讀取該目錄下的檔案,例如可以使用ls顯示目錄裡面的檔案、w表示可以在目錄下建立檔案、x表示可以進入目錄,例如可以使用cd 進入一個目錄。

1.3 檔案與目錄的預設許可權umask

首先執行命令umask檢視一下:

    這裡寫圖片描述

 我們發現顯示的是0022,那麼它們代表什麼意思呢?現在新建一個檔案和目錄,然後檢視新建的檔案和目錄的許可權。
    這裡寫圖片描述
    從圖中可以看出新建的f1檔案許可權為644,新建的目錄d1許可權為755,如果一個檔案或者檔案具有全部許可權,那麼它的許可權為777,我們可以發現777去掉022就是755,其實umask代表的就是新建的檔案或者目錄去掉的許可權,但是新建檔案不具備執行許可權,因此還要在umask的基礎上再去掉執行許可權!所以新建的檔案許可權就是644了!

1.4 更改檔案或者目錄的屬性和許可權

  • chown:更改檔案擁有者
  • chgrp:更改檔案所屬組
  • chmod:更改檔案許可權,包括後面會說到的SUID等
    這裡寫圖片描述

二 檔案與目錄的隱藏屬性和特殊許可權

2.1 檔案與目錄的隱藏屬性

  • chattr設定檔案隱藏屬性
    chattr [+-=] [ASacdistu] 其中[]代表裡面的引數可選
    A:存取檔案時,atime不會被修改,可避免過度I/O操作
    S:進行任何的檔案修改都會同步到磁碟(sync)
    a:這個檔案只能增加資料,不能刪除也不能修改檔案資料,只有root才能設定這個屬性
    c:會自動對檔案進行壓縮,讀取的時候回自動解壓縮
    d:當dump程式被執行時,可使檔案不被dump備份
    i:讓一個檔案不被刪除、改名、設定連結也無法寫入或新增資料
    s:如果一個檔案被刪除,它將完全從磁碟刪除
    u:如果檔案被刪除,資料的內容還存在在磁碟中

  • lsattr顯示檔案隱藏屬性
    lsattr [-adR] 檔案或目錄
    -a:將檔案的隱藏屬性顯示出來
    -d:如果接的是目錄,僅列出目錄本身的屬性而非目錄內的檔案
    -R:連同子目錄的屬性也一併顯示
    這裡寫圖片描述
    從上圖可以看出設定了i隱藏屬性後,root也無法刪除,必須把i屬性去掉才可以刪除。

    2.2 檔案的特殊許可權SUID、SGID、SBIT

  • SUID(set UID)
    當S出現在檔案擁有者的x許可權上面時,執行者在執行該檔案的過程中擁有該檔案擁有者的許可權!例如/etc/passwd檔案
    這裡寫圖片描述
    雖然該檔案(命令)所輸入和所屬組都是root,但是每個人都可以修改自己的密碼,因為在執行該檔案(命令)的時候,設定了UID,就擁有了root許可權。
    SUID只對可執行檔案有效!,也就是二進位制檔案

  • SGID(set GID)
    SGID對檔案和目錄都有效,其效果分別如下表述:
    —-針對檔案,SGID對二進位制檔案有效、執行者需要擁有執行檔案的X許可權,執行者執行過程中會獲得程式檔案群組的支援!
    例如locate程式去查詢mlocate.db資料庫:
    這裡寫圖片描述
    從上面可以知道,locate檔案(命令)的組X許可權具有S許可權,那麼執行的人在執行locate時候將會獲得slocate群組的許可權,這樣就可以檢視mlocate.db的內容了。

    —-針對目錄,SGID設定在目錄的X上面,如果執行者具有目錄的w和x許可權,那麼執行者在該目錄下所建立的檔案具有和目錄相同的所屬組!

  • SBIT (Sticky Bit)
    只對目錄有效,對目錄設定了SBIT之後,在目錄中建立的檔案只能自己和root可以刪除。用鳥哥的話說:“當甲這個使用者於 A 目錄是具有群組或其他人的身份,並且擁有該目錄 w 的許可權, 這表示“甲使用者對該目錄內任何人建立的目錄或檔案均可進行 “刪除/更名/搬移” 等動作。”不過,如果將 A 目錄加上了 SBIT 的許可權專案時, 則甲只能夠針對自己建立的檔案或目錄進行刪除/更名/移動等動作,而無法刪除他人的檔案。”可以自己試試操作!

    設定特殊許可權的命令

      4—SUID
      2—SGID
      1—SBIT
    這裡寫圖片描述