Linux 文件和目录权限解释

Linux 是一款多用戶作業系統,這意味著多個使用者可以同時與同一臺電腦互動。作為一個多用戶系統,確保不同使用者的檔案安全和隱私至關重要。

為此,Linux 設計了一個精密的系統來管理檔案和目錄的權限。透過這種方式,Linux 用戶可以控制不同使用者對檔案的存取,以及他們在使用電腦時可以執行的操作。

作為 Linux 使用者,瞭解 Linux 如何處理檔案和目錄權限,以及如何運用不同的可用權限來保護檔案並確保電腦功能正常運作至關重要。為了理解 Linux 如何管理這些權限,我們首先來認識一下 Linux 作業系統中的不同使用者類型。

Linux 中的使用者類別

第一類使用者是檔案或目錄的所有者。在 Linux 中,每個檔案或目錄都有一個所有者。通常,所有者會被授予對其檔案或目錄的更多權限。檔案的所有者通常用字母 u 表示(代表 user)。

在 Linux 中,可以將多個使用者放入一個群組中,並為該群組授予對檔案的權限。這些被稱為群組所有者,用字母 g 表示。

例如,如果您有一個包含書籍推薦的檔案,並且您想向多個使用者授予對該檔案的類似權限,一個簡單的方法就是將這些使用者放入一個群組,並向整個群組授予權限。

另一類使用者被稱為其他使用者,用字母 o 表示。這些使用者既不擁有該檔案,也不屬於擁有該檔案權限的群組。其他使用者代表系統中的其他人。

電腦中的所有使用者,包括檔案所有者、群組中的使用者和其他使用者,都可以使用字母 a 指定(代表 all)。

在 Ubuntu Linux 中建立並新增新使用者

讓我們來看看如何在 Ubuntu Linux 中建立並新增新使用者。為了跟隨本教程,請也嘗試建立一個新使用者。

1. 開啟「設定」,然後在左側選單列中點擊「使用者」,接著點擊「解鎖」,並在出現提示時提供密碼。您需要點擊「解鎖」才能新增新使用者。預設情況下,此功能是鎖定的。

2. 解鎖後,您會看到一個「新增使用者」的選項,點擊它即可新增新使用者。

3. 為了建立新使用者,請提供其全名和使用者名稱,選擇立即設定密碼,然後設定密碼。此外,請確保帳戶類型設定為管理員,然後點擊「新增」以加入使用者。

4. 您應該會看到剛建立的新使用者帳戶出現,如下所示。

Linux 檔案和目錄權限

權限是指管理對檔案和目錄的存取,以及不同使用者可以對它們執行哪些操作的規則。Linux 的權限主要分為三類:

  • 讀取(r) – 允許使用者查看檔案的內容,並列出目錄的內容。
  • 寫入(w) – 允許使用者修改檔案的內容。對於目錄,寫入權限允許使用者修改目錄的內容,例如透過建立、刪除、重新命名或移動目錄中的檔案和子目錄。但是,只有當使用者還具有執行權限時,目錄的寫入權限才有效。
  • 執行(x) – 執行權限意味著檔案可以被視為可以執行的程式。對於目錄,執行權限允許使用者進入或“cd”到目錄中。

讀取、寫入和執行權限分配給 Linux 中可用的三類使用者。

您也可以閱讀如何在 Linux 中刪除檔案和目錄。

Linux 中的長列表

要查看 Linux 目錄中檔案的內容,我們通常會執行 ls 命令。然而,這僅列出了可用的檔案和目錄,並不提供任何其他資訊。

為了查看關於內容的更多資訊,您需要使用長列表格式。為此,請執行帶有 -l 標誌的 ls 命令。這將為您提供檔案權限、檔案所有者以及檔案的群組所有者,如下所示:

在 Ubuntu 中,預設情況下,如果沒有建立群組,則群組名稱與檔案的所有者相同。

要建立群組,我們使用命令 addgroup。要加入一個名為 editors 的群組,請執行以下命令,並在出現提示時提供密碼。

sudo addgroup editors

sudo 允許我們以 root 使用者身份執行命令,root 使用者是超級使用者,有權執行影響電腦所有使用者的變更。

要將使用者新增到群組,我們使用以下語法:

adduser <user> <group>

因此,要將 belmontmadici 加入到 editors 群組中,我們執行:

sudo adduser belmont editors
sudo adduser madici editors

要查看使用者所屬的群組,請執行:

groups <username>

上述命令的執行結果如下圖所示:

現在讓我們看一下檔案屬性,它會告訴我們檔案類型和檔案權限。A。

Linux 中的檔案屬性

在 Linux 中,檔案屬性正好由十個字元組成。第一個字元表示檔案的類型。代表不同檔案的一些常見首字元包括:

  • d 表示目錄
  • - 表示常規檔案,例如文字檔案
  • c 表示字元特殊檔案
  • l 表示符號連結
  • b 表示區塊特殊檔案

其餘九個字元用於顯示所有者、群組所有者和其他使用者的權限。九個角色被分成三組。第一組表示所有者的權限,第二組表示群組所有者的權限,最後三組表示其他人(即電腦中的每個其他使用者)的權限。

每個類別的權限都以讀取權限開始,然後是寫入權限,最後是執行權限。讀取權限用字母 r 表示,寫入權限用字母 w 表示,執行權限用字母 x 表示。

如果使用者沒有特定權限,則使用 符號。例如,群組所有者的 rw- 意味著他們具有讀取和寫入權限,但沒有對該目錄(d)的執行權限。

使用符號表示法變更檔案權限

要變更檔案或目錄的權限,我們使用 chmod 命令,並指定要變更權限的對象。

這可以是使用者用字母 u 表示的檔案所有者,用字母 g 表示的群組所有者,或用字母 o 表示的其他使用者。我們還可以使用字母 a 來定位所有三類使用者,這意味著以上所有內容。

我們指定的下一件事是我們正在做出的變更。要新增權限,我們使用 +(加號)。要刪除權限,我們使用 -(減號)。我們提供的最後一件事是使用 rwx 來表示三個可用的權限。

為了查看實際效果,請使用以下命令建立一個名為 books 的目錄:

mkdir books

輸入或“cd”進入目錄:

cd books

建立一個名為 ReadingList.txt 的檔案:

touch readingList.txt

透過執行以下命令,長列出 books 目錄的內容:

ls -l

輸出結果如下圖所示:

我們建立的檔案是一個普通檔案,由第一個 - 表示,所有者和群組所有者有讀寫權限,而其他使用者只有讀權限。要授予其他使用者寫入該檔案的權限,我們將執行以下命令:

chmod o+w readingList.txt

要查看其他使用者的權限是否已變更,請執行:

ls -l

輸出:

請注意,其他使用者的檔案權限已從 r-- 變更為 rw-,這表示他們現在具有寫入權限。

要將執行權限新增到檔案執行者的所有者(使用者):

chmod u+x readingList.txt

要刪除群組所有者的寫入權限,請執行:

chmod g-w readingList.txt

要刪除所有使用者的讀取權限,以使任何人都無法查看該檔案,請執行:

chmod a-r readingList.txt

要重新新增檔案所有者的讀取權限,請執行:

chmod u+r readingList.txt

要向檔案執行者的群組所有者新增寫入和執行權限:

chomod g+wx readingList.txt

使用八進位表示法變更權限

在 Linux 中,三個可用權限中的每一個都只有兩個可能的值。讀取權限只能是 r-,寫入權限只能是 w-,執行權限只能是 x-

因此,這些權限可以被認為是開啟或關閉,因此可以使用二進位數表示,而二進位數只有兩個可用值。 1 表示開啟或 true0 表示關閉或 false。在那裡,諸如 rw-- 之類的權限可以使用二進位數表示為 110

因此,對於任何給定類別的使用者,三個二進位數足以表示其所有權限。例如,所有者、群組和其他人的權限 rwxrw-r-- 可以使用二進位數表示為 111110100

然而,為了避免編寫又長又容易混淆的二進位數,更好的選擇是使用八進位數。

八進位數的基數為 8,因此只有 8 個可能的值。每個八進位數正好對應到三個二進位數字。

因此,像 rw- 這樣的權限可以用二進位表示為 110110 的八進位相當於 6,因此 6 可以用來表示 rw-。八進位數字可以用來表示所有者、群組和其他人的讀取、寫入和執行權限,如下所示:

與其編寫長二進位數字,不如使用八進位數表示權限。因此,所有者、群組和其他人的所有權限都使用單個八進位數表示,如上圖所示。

使用八進位表示法設定權限的優點是,它允許您一次為所有使用者設定權限,這與符號表示法不同,在符號表示法中一次只能設定單個使用者的權限。

然而,使用八進位表示法需要一些時間和練習才能回憶起每個八進位數的涵義。也就是說,每當您使用八進位表示法時,請隨時參考上圖。讓我們來看幾個使用八進位表示法變更權限的範例。

要授予所有使用者(即所有者、群組所有者和其他使用者)對 readingList.txt 的讀取、寫入和執行權限,請執行:

chmod 777 readingList.txt

要檢查權限是否已變更,請執行:

ls -l

輸出:

total 0
-rwxrwxrwx 1 madici madici 0 Sep  6 05:45 readingList.txt

請注意,現在所有者、群組和其他使用者都擁有讀取、寫入和執行 readingList.txt 的權限。

要刪除群組所有者和其他使用者的寫入權限,請執行:

chmod 755 readingList.txt

要刪除所有者和其他使用者執行的執行權限:

chmod 654 readingList.txt

Linux 中的特殊權限

除了標準的讀取、寫入和執行權限之外,Linux 還具有三種可以應用於檔案和目錄的特殊權限。這些權限提供了存取控制的高級功能,允許權限較低的使用者執行權限較高的檔案和命令,就像檔案所有者或群組所有者一樣。

特殊權限包括:

  • 設定使用者 ID (SUID) – SUID 權限允許使用者以檔案或程式所有者的權限執行檔案或程式,而不是執行它的使用者的權限。當標準使用者需要執行需要提升權限的任務時,這非常有用。
  • 設定群組 ID (SGID) – SGID 權限允許使用者以檔案群組所有者的權限(而不是其實際群組的權限)執行檔案。
  • 黏著位元 – 黏著位元通常是為目錄設定的權限,以確保目錄中的檔案只能由目錄的實際所有者、特定檔案的所有者或 root 使用者刪除。

這三種特殊權限可以與標準權限一起使用:讀取、寫入和執行。

結論

即使您的電腦沒有多個使用者,權限也是 Linux 中的一個重要概念。瞭解權限對於確保 Linux 系統中儲存的資料及其功能的控制、安全性和隱私性非常重要。因此,請考慮透過練習您在本文中學到的關於權限的知識來熟悉權限。

您也可以探索如何在 Windows 上使用 Linux 命令。