在Linux中,什麼是檔案許可權?它們是如何工作的?

黄嘉波發表於2024-03-31

在Linux中,檔案許可權是一套用於控制使用者和使用者組對檔案或目錄訪問行為的許可權系統。這些許可權確保了檔案系統的安全性,防止未經授權的訪問、修改或執行檔案。Linux檔案許可權的核心特點包括:

  1. 三種基本許可權

    • 讀許可權(r):允許使用者讀取檔案內容。對於目錄,讀許可權允許使用者列出目錄中的檔案和子目錄。
    • 寫許可權(w):允許使用者修改檔案內容或刪除、重新命名檔案。對於目錄,寫許可權允許使用者在目錄中建立、刪除或重新命名檔案和子目錄。
    • 執行許可權(x):對於普通檔案,執行許可權意味著檔案可以作為可執行程式執行。對於目錄,執行許可權允許使用者進入目錄並訪問其中的檔案和子目錄。
  2. 許可權的歸屬
    檔案許可權分為三類使用者群體,它們對應檔案的每一個許可權位:

    • 檔案所有者(Owner):建立檔案的使用者,擁有對該檔案的完全控制權。
    • 所屬使用者組(Group):檔案所有者所在的使用者組,組內成員共享一定的訪問許可權。
    • 其他使用者(Others):除所有者和所屬組之外的所有使用者,通常具有受限的訪問許可權。
  3. 許可權的表示
    檔案許可權可以以兩種形式顯示:

    • 符號表示法:使用rwx(讀、寫、執行)字元表示許可權,如-rw-r--r--。其中第一個字元代表檔案型別(-表示普通檔案,d表示目錄),接下來的三組各三個字元分別對應所有者、所屬組和其他使用者的許可權。
    • 數字表示法:每個許可權位對應一個數值(讀=4,寫=2,執行=1),將這三個許可權值相加得到一個八進位制數。如rw-r--r--對應的數字表示為644
  4. 許可權的修改
    使用chmod命令可以更改檔案或目錄的許可權。例如:

    • 符號表示法:chmod u+x file 給檔案所有者新增執行許可權。
    • 數字表示法:chmod 750 file 將檔案許可權設定為所有者具有讀、寫、執行許可權(7),所屬組有讀和執行許可權(5),其他使用者無許可權(0)。
  5. 特殊許可權
    除了基本許可權外,Linux系統還提供了特殊許可權,如SUID、SGID和sticky bit,用於更精細的許可權控制。這些許可權通常影響程式執行時的身份、檔案或目錄的繼承規則等。

許可權的工作原理

當一個使用者嘗試訪問一個檔案時,作業系統會檢查以下條件以決定是否允許訪問:

  1. 使用者身份:系統首先確定訪問請求者的身份(使用者ID或使用者組ID)。

  2. 檔案許可權:根據使用者身份,系統檢查對應許可權位(所有者、所屬組或其他)是否允許所請求的操作(讀、寫、執行)。如果請求的操作在許可權範圍內,訪問被允許;否則,訪問被拒絕。

  3. 訪問控制列表(ACLs):除了傳統的使用者/組許可權外,某些Linux系統還支援ACLs,提供了更細粒度的許可權控制。在存在ACL的情況下,系統還會檢查相應的ACL規則是否允許訪問。

  4. 檔案系統掛載選項:某些檔案系統可能被以特定的掛載選項(如nosuidnoexec等)掛載,這些選項可能會影響檔案的執行許可權。

  5. 超級使用者許可權:具有超級使用者(root)許可權的使用者通常可以繞過常規許可權檢查,對任何檔案進行操作。

綜上所述,Linux檔案許可權透過定義使用者和使用者組對檔案或目錄的讀、寫、執行許可權,確保了檔案系統的訪問控制。作業系統在接收到訪問請求時,會依據許可權設定、使用者身份、特殊許可權、ACL規則以及檔案系統的掛載選項等因素,決定是否允許該訪問請求。這種機制為Linux系統提供了強大的安全保障,防止未經授權的訪問、修改或執行檔案。

相關文章