Linux 檔案許可權
Linux 是 UNIX 的一個副本,它是多使用者作業系統,可以被許多使用者同時訪問。Linux 也可以在大型機和伺服器中使用而無需任何修改。但這會引發安全問題,因為惡意的使用者可能會損壞、更改或刪除關鍵資料。為了有效的安全性,Linux 將授權分為兩個級別。
- 所有權
- 許可
許可權和所有權的概念在 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
有兩種方法可以使用該命令 -
- 絕對模式
- 符號模式
絕對(數字)模式
在此模式下,檔案許可權不用字元表示,而是三位八進位制數。
下表給出了所有許可權型別的數字。
數字 | 許可型別 | 符號 |
---|---|---|
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 將檔案許可權分為讀,寫和執行,由
r
,w
和x
表示 - 可以通過
chmod
命令更改檔案的許可權,該命令可以進一步分為絕對模式和符號模式 chown
命令可以更改檔案/目錄的所有權。使用以下命令:chown user file
或chown user:group file
chgrp
命令可以更改組所有權chrgrp group filename