Linux 檔案許可權

Linux 是 UNIX 的一個副本,它是多使用者作業系統,可以被許多使用者同時訪問。Linux 也可以在大型機和伺服器中使用而無需任何修改。但這會引發安全問題,因為惡意的使用者可能會損壞、更改或刪除關鍵資料。為了有效的安全性,Linux 將授權分為兩個級別。

  1. 所有權
  2. 許可

許可權所有權的概念在 Linux 中至關重要。在這裡,我們將學習它們。讓我們從所有權開始。

Linux 檔案的所有權

Unix/Linux 系統上的每個檔案和目錄都分配了 3 種型別的所有者,如下所示。

使用者

使用者是檔案的所有者。預設情況下,建立檔案的人將成為其所有者。因此,使用者有時也被稱為所有者。

使用者組

使用者組可以包含多個使用者。屬於某個組的所有使用者對該檔案具有相同的訪問許可權。假設你有一個專案,許多人需要訪問檔案。你可以將所有使用者新增到組中,而不是手動為每個使用者分配許可權,並將組許可權分配給檔案,以便只有該組成員才能讀取或修改檔案。

其他

有權訪問檔案的任何其他使用者。此人既沒有建立檔案,也沒有屬於可以擁有該檔案的使用者組。實際上,它意味著其他所有人。

現在,最大的問題是 Linux 如何區分這三種使用者型別,這樣使用者 A 就不會影響其他使用者 B 重要資訊/資料的檔案。這是許可權設定的地方,它們定義使用者行為

讓我們瞭解 Linux 上的許可權系統

許可權

UNIX/Linux 系統中的每個檔案和目錄都具有為上面討論的所有 3 個所有者定義的以下 3 個許可權。

  • 此許可權授予你開啟和讀取檔案的許可權。你有目錄的讀取許可權的話,你就能夠列出其內容。
  • 寫許可權授予你修改檔案內容的許可權。對目錄的寫入許可權使你有權新增、刪除和重新命名儲存在目錄中的檔案。假如你必須在檔案上寫入許可權,但對儲存檔案的目錄沒有寫入許可權。你將能夠修改檔案內容。但是你將無法從目錄重新命名、移動或刪除該檔案。
  • 執行在 Windows 中,可執行程式通常具有副檔名 .exe,你可以輕鬆執行它們。在 Unix/Linux 中,除非設定了執行許可權,否則無法執行程式。如果未設定執行許可權,你仍可以檢視/修改程式程式碼(提供讀寫許可權),但不能執行它。

ls -l 在終端上會列出檔案和資料夾的許可權資訊,

dishan@vultr:~$ ls - l
-rw-rw-r-- 1 home home 0 2018-09-14 18:35 TestFile

在這裡,-rw-rw-r-- 程式碼是告訴我們所有者、使用者組和其他人對檔案的許可權程式碼。

這裡,第一個 - 表示我們選擇了一個檔案,

否則,如果是目錄,則會顯示 d

drw-rw-r-- 2 home home 80 2018-09-14 18:35 Desktop

許可權程式碼字母也很容易記住。

許可權程式碼 說明
r 讀取許可權
w 寫入許可權
x 執行許可權
- 沒有許可權

讓我們這樣來看看剛才的例子,

程式碼的第一部分是 rw-。這表明所有者 Home 可以:

  • 讀檔案
  • 編寫或編輯檔案
  • 由於執行位設定為 -,因此無法執行該檔案。

根據設計,許多 Linux 發行版如 Fedora,CentOS,Ubuntu 等都會將使用者新增到與使用者名稱相同的組名中。因此,使用者 tom 被新增到名為 tom 的組中。

第二部分是 rw-。使用者組 Home 和組成員可以:

  • 讀檔案
  • 編寫或編輯檔案

第三部分是其他任何使用者。r--。這意味著使用者只能:

  • 讀檔案

使用 chmod 命令更改檔案/目錄許可權

假設你不希望其他使用者訪問某些檔案,這可以通過更改檔案許可權來實現。

我們可以使用 chmod 命令代表 change mode。使用該命令,我們可以在所有者、使用者組和其他使用者的檔案/目錄上設定許可權(讀,寫,執行)。語法如下,

chmod permissions filename

有兩種方法可以使用該命令 -

  1. 絕對模式
  2. 符號模式

絕對(數字)模式

在此模式下,檔案許可權不用字元表示,而是三位八進位制數。

下表給出了所有許可權型別的數字。

數字 許可型別 符號
0 沒有許可 ---
1 執行 --x
2 -w-
3 執行+寫入 -wx
4 r--
5 讀+執行 r-x
6 讀+寫 rw-
7 讀+寫+執行 rwx

讓我們看看 chmod 命令的執行情況。

在上面給出的終端視窗中,我們已將檔案 sample 的許可權更改為 764

764 絕對程式碼說明如下:

  • 所有者可以讀,寫和執行
  • 使用者組可以讀寫
  • 其他使用者只讀

這是通過分配絕對數字來更改檔案許可權的方法。

符號模式

在絕對模式下,你可以更改所有 3 個所有者的許可權。在符號模式下,你可以修改特定所有者的許可權。它利用數學符號來修改檔案許可權。

操作符 說明
+ 新增檔案或目錄的許可權
- 刪除許可權
= 設定許可權並覆蓋先前設定的許可權

不同的使用者用不同的字母來表示,

使用者符號
u 使用者/所有者
g 小組
o 其他
a 所有使用者

我們不會在像 755 這樣的數字中使用許可權,而是使用像 rwx 這樣的字元。比如,

dishan@vultr:~$ chmod o=rwx test
dishan@vultr:~$ chmod g+x test
dishan@vultr:~$ chmod u-r test

改變所有權和使用者組

要更改檔案/目錄的所有權,可以使用以下命令:

chown user

如果要更改使用者以及檔案或目錄的使用者組,可以用以下命令,

chown user:group filename

讓我們看看例子,

下面命令將檔案所有者更改為 testuser

dishan@vultr:~$ sudo chown testuser sample.txt

下面命令將檔案所有者和使用者組更改為 root

dishan@vultr:~$ sudo chown root:root sample.txt

如果你只想更改組所有者,請使用下面的命令

chgrp group_name filename

chgrp 代表 change group

提示

  • 檔案 /etc/group 包含系統中定義的所有組
  • 你可以使用命令 groups 查詢你所屬的所有組
  • 你可以使用命令 newgrp 作為預設組以外的組的成員
  • 你不能擁有 2 個擁有相同檔案的組。
  • 你在 Linux 中沒有巢狀組。其中一組不能成為其他組的子組

複習

  • 作為多使用者系統的 Linux 使用許可權和所有權來實現安全性。
  • Linux 系統上有三種使用者型別即。使用者,使用者組和其他使用者
  • Linux 將檔案許可權分為讀,寫和執行,由 rwx 表示
  • 可以通過 chmod 命令更改檔案的許可權,該命令可以進一步分為絕對模式和符號模式
  • chown 命令可以更改檔案/目錄的所有權。使用以下命令:chown user filechown user:group file
  • chgrp 命令可以更改組所有權 chrgrp group filename