Linux 許可權入門指南

2019-07-04 13:38:00

Linux 安全許可權能夠指定誰可以對檔案或目錄執行什麼操作。

與其他系統相比而言 Linux 系統的眾多優點中最為主要一個便是 Linux 系統有著更少的安全漏洞和被攻擊的隱患。Linux 無疑為使用者提供了更為靈活和精細化的檔案系統安全許可權控制。這可能意味著 Linux 使用者理解安全許可權是至關重要的。雖然這並不一定是必要的,但是對於初學者來說,理解 Linux 許可權的基本知識仍是一個明智之選。

檢視 Linux 安全許可權

在開始 Linux 許可權的相關學習之前,假設我們新建了一個名為 PermissionDemo 的目錄。使用 cd 命令進入這個目錄,然後使用 ls -l 命令檢視 Linux 安全管理許可權資訊。如果你想以時間為序排列,加上 -t 選項

ls -lt

因為這一目錄下沒有檔案,所以這一命令執行不會返回結果。

No output from ls -l command

要了解關於 ls 命令的更多資訊,請通過在命令列中輸入 man ls 來檢視命令手冊。

ls man page

現在,讓我們建立兩個名為 cat.txtdog.txt 的空白檔案;這一步使用 touch 命令將更為簡便。然後繼續使用 mkdir 命令建立一個名為 Pets 的空目錄。我們可以再次使用ls -l命令檢視這些新檔案的許可權。

Creating new files and directory

我們需要留意這個命令輸出結果的兩個部分。

誰擁有許可權?

首先要注意的是具有存取檔案/目錄的許可權。請注意下面紅色框中突出顯示的部分。第一列是指具有存取許可權的使用者,而第二列是指具有存取許可權的

Output from -ls command

使用者的型別主要有三種:使用者、組和其他人(本質上既不是使用者也不是組)。還有一個全部,意思是幾乎所有人。

User types

由於我們使用 root 作為當前使用者,所以我們可以存取任何檔案或目錄,因為 root 是超級使用者。然而,通常情況並非如此,你可能會被限定使用你的普通使用者登入。所有的使用者都儲存在 /etc/passwd 檔案中。

/etc/passwd file

“組”的相關資訊儲存在 /etc/group 檔案中。

/etc/passwd file

他們有什麼許可權?

我們需要注意的是 ls -l 命令輸出結果的另一部分與執行許可權有關。以上,我們檢視了建立的 dog.txtcat.txt 檔案以及 Pets 目錄的所有者和組許可權都屬於 root 使用者。我們可以通過這一資訊了解到不同使用者組所擁有的相應許可權,如下面的紅色框中的標示。(LCTT 譯註:下圖的“OWNER”應為“OTHER”)

Enforcing permissions for different user ownership types

我們可以把每一行分解成五部分。第一部分標誌著它是檔案還是目錄:檔案用 -(連字元)標記,目錄用 d 來標記。接下來的三個部分分別是使用者、組和其他人的對應許可權。最後一部分是存取控制列表 (ACL)的標誌,是記錄著特定使用者或者使用者組對該檔案的操作許可權的列表。

Different Linux permissions

Linux 的許可權級別可以用字母或數位標識。有三種許可權型別:

  • 可讀取:r4
  • 可寫入:w2
  • 可執行:x1

(LCTT 譯註:原文此處對應的字母標示 x 誤寫為 e,已更正)

Privilege types

每個字母符號(rwx)表示有該項許可權,而 - 表示無該項許可權。在下面的範例中,檔案的所有者可讀可寫,使用者組成員僅可讀,其他人可讀可執行。轉換成數位表示法,對應的是 645(如何計算,請參見下圖的圖示)。

Permission type example

以下是一些範例:

Permission type examples

完成下面的測試,檢查你是否掌握了許可權管理相關的知識。

Permission type examples