Linux讀寫執行許可權(-r、-w、-x)的真正含義

2020-07-16 10:04:46
通過前面的學習,我們知道了給檔案設定許可權的重要性,也知道了如何給檔案設定許可權。那麼,讀(r)、寫(w)、執行(x)許可權到底指的是什麼呢?

首先要告訴大家的是,這些許可權的含義並沒有表面上那麼簡單,甚至同一許可權對檔案和目錄的含義也不相同。

rwx 許可權對檔案的作用

檔案,是系統中用來儲存資料的,包括普通的文字檔案、資料庫檔案、二進位制可執行檔案,等等。不同的許可權對檔案的含義如表 1 所示。

表 1 rwx 許可權對檔案的作用
rwx 許可權 對檔案的作用
讀許可權(r) 表示可讀取此檔案中的實際內容,例如,可以對檔案執行 cat、more、less、head、tail 等檔案檢視命令。
寫許可權(w) 表示可以編輯、新增或者修改檔案中的內容,例如,可以對檔案執行 vim、echo 等修改檔案資料的命令。注意,無許可權不賦予使用者刪除檔案的權利,除非使用者對檔案的上級目錄擁有寫許可權才可以。
執行許可權(x) 表示該檔案具有被系統執行的許可權。Window系統中檢視一個檔案是否為可執行檔案,是通過擴充套件名(.exe、.bat 等),但在 Linux 系統中,檔案是否能被執行,是通過看此檔案是否具有 x 許可權來決定的。也就是說,只要檔案擁有 x 許可權,則此檔案就是可執行檔案。但是,檔案到底能夠正確執行,還要看檔案中的程式碼是否正確。

對於檔案來說,執行許可權是最高許可權。給使用者或群組設定許可權時,是否賦予執行許可權需要慎重考慮,否則會對系統安裝造成嚴重影響。

rwx 許可權對目錄的作用

目錄,主要用來記錄檔名列表,不同的許可權對目錄的作用如表 2 所示。

表 2 rwx 許可權對目錄的作用
rwx 許可權 對目錄的作用
讀許可權(r) 表示具有讀取目錄結構列表的許可權,也就是說,可以看到目錄中有哪些檔案和子目錄。一旦對目錄擁有 r 許可權,就可以在此目錄下執行 ls 命令,檢視目錄中的內容。
寫許可權(w) 對於目錄來說,w 許可權是最高許可權。對目錄擁有 w 許可權,表示可以對目錄做以下操作:
  • 在此目錄中建立新的檔案或子目錄;
  • 刪除已存在的檔案和目錄(無論子檔案或子目錄的許可權是怎樣的);
  • 對已存在的檔案或目錄做更名操作;
  • 移動此目錄下的檔案和目錄的位置。
一旦對目錄擁有 w 許可權,就可以在目錄下執行 touch、rm、cp、mv 等命令。
執行許可權(x) 目錄是不能直接執行的,對目錄賦予 x 許可權,代表使用者可以進入目錄,也就是說,賦予 x 許可權的使用者或群組可以使用 cd 命令。

對目錄來說,如果只賦予 r 許可權,則此目錄是無法使用的。很簡單,只有 r 許可權的目錄,使用者只能檢視目錄結構,根本無法進入目錄(需要用 x 許可權),更不用說使用了。

因此,對於目錄來說,常用來設定目錄的許可權其實只有 0(---)、5(r-x)、7(rwx)這 3 種。

【例 1】
某目錄的許可權如下所示:

drwxr--r--.  3  root  root  4096  Jun 25 08:35   .ssh

系統有個賬號名稱為 vbird,此賬戶並不包含在 root 群組中,請問 vbird 對這個目錄有何許可權?是否可切換到此目錄中?

答案:vbird 對此目錄僅具有 r 的許可權,因此 vbird 可以查詢此目錄下的檔名列表。因為 vbird 不具有 x 的許可權,因此 vbird 並不能切換到此目錄內。


【例 2】
假設有個賬號名稱為dmtsai,他的家目錄在/home/dmtsai/,dmtsai對此目錄具有[rwx]的許可權。若在此目錄下有個名為 the_root.data 的檔案,該檔案的許可權如下:

-rwx------. 1 root  root  4365 Sep 19 23:20  the_root.data

請問 dmtsai 對此檔案的許可權為何?可否刪除此檔案?

答案:由於 dmtsai 對此檔案來說是其他人的身份,因此這個檔案他無法讀、無法編輯也無法執行,也就是說,他無法變動這個檔案的內容就是了。但是由於這個檔案在他的家目錄下,他在此目錄下具有 rwx 的完整許可權,因此對於 the_root.data 這個檔案來說,是能夠刪除的。