深入瞭解Linux檔案許可權的定義、檢視及修改等

深入瞭解Linux檔案許可權的定義、檢視及修改等

Linux以其強大而可靠的作業系統而聞名,它具有無與倫比的安全性、穩定性和靈活性。為了維護系統的完整性和安全性,Linux以 “許可權” 的形式實現了特定設定。這些許可權控制誰可以訪問、修改或執行檔案和目錄。無論你是一個新的Linux使用者還是一個經驗豐富的老手,瞭解Linux的許可權對於一個安全的系統是極其重要的。在這篇文章中,我們將深入探討什麼是Linux許可權,以及如何以最佳方式保持你的檔案和目錄的安全。

瞭解Linux的許可權

Linux檔案許可權是允許使用者控制誰可以訪問他們的檔案的特定設定。在Linux中,每個檔案或目錄都有一組許可權,分佈在三個級別的系統使用者中:

  • User:使用者,這是指檔案或目錄的所有者。一般來說,建立檔案/目錄的使用者是所有者。
  • Group:組,一個組是多個使用者的集合,對一個檔案或目錄具有相同的許可權。
  • Others:其他,每一個既不是所有者也不是組的成員的其他使用者都屬於這個類別。

這些使用者中的每一個都有三種型別的檔案許可權,決定了使用者可以執行的不同型別的操作:

  • Read (r):讀取,允許使用者檢視一個檔案或目錄的內容。對於一個檔案,讀許可權意味著使用者可以列印和複製檔案的內容。如果是目錄,有了讀的許可權,使用者可以檢視和複製目錄中的檔案。
  • Write (w):寫入,允許使用者修改檔案/目錄的內容。當為一個使用者設定了寫許可權時,該使用者可以新增、刪除甚至重新命名檔案或目錄。
  • Execute (x):執行,允許使用者執行檔案或訪問目錄。這與我們在Windows上看到的情況形成鮮明對比,可執行檔案有一個”.exe” 副檔名,使用者可以簡單地執行它。但在Linux中,如果檔案對使用者來說有可執行的許可權,那麼使用者才可以執行它。
  • Dash (-):破折號,它意味著沒有設定許可權或沒有許可權。

如何檢視Linux中的檔案許可權

現在你知道了Linux中存在哪些檔案許可權,讓我們看看如何檢視授予檔案的許可權。檢視檔案許可權是非常容易的,你只需要使用這個命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ls -l
ls -l
ls -l

一旦你執行這個命令,你將看到當前位置的所有檔案和目錄的列表。你的輸出將類似於下面的螢幕截圖:

當前位置的所有檔案和目錄的列表

看起來很混亂?讓我們試著用一個例子來理解這個問題:

Linux許可權解釋

在上述例子中:

  • 第一個字元(-)表示檔案型別;’ - ‘表示該專案是一個檔案,’ d ‘表示一個目錄。
  • 接下來的九個字元指定了該條目的許可權設定(後面會有更多介紹)。
  • 接下來的數字顯示了該檔案的連結數。預設情況下,該專案將有1。
  • 下一欄顯示了檔案所有者的名字
  • 接著下一欄顯示哪個對該檔案有訪問權。
  • 倒數第三欄顯示了檔案的大小
  • 倒數第二欄顯示了檔案的最近修改時間
  • 最後一欄顯示檔案/目錄的名稱

Linux許可權圖解

在簡化了 ls-l 命令的輸出後,讓我們用” rwxr-xr-- “的樣本許可權集來展開許可權部分:

  • 這裡,前3個字元,’ rwx ‘表示檔案所有者有讀(r),寫(w),和可執行(x)的許可權。
  • 接下來的3個字元,’ r-x ‘表示組內使用者有讀取(r)和可執行(x)的許可權,但沒有寫入許可權(-)。
  • 最後3個字元,’ r-- ‘表示所有其他使用者只有讀(r)許可權。最後的兩個破折號表示沒有許可權(在這種情況下沒有寫和執行的許可權)。

因此,總的來說,前3個字元表示檔案所有者的許可權;第二組3個字元表示組內使用者的許可權,最後3個字元表示其他使用者的許可權。

如何改變Linux中的檔案許可權

要改變Linux中的檔案許可權,我們使用chmod命令,它代表了 “change mode”。使用chmod命令的基本語法是:

chmod <options> <permissions> <filename>

你可以與chmod搭配的一些命令選項是:

選項 描述
-v 為每個被處理的檔案顯示診斷資訊
-c -v 的工作原理相同,只是如果有任何改變,它只顯示一個診斷資訊。
-f 用來抑制大多數錯誤資訊。
-R 用來遞迴地改變檔案和目錄。

對於<許可權>部分,你可以使用兩種方法中的任何一種:

  • 絕對模式
  • 符號模式

chmod中的絕對模式

在這種模式下,許可權是用1到7的3位數的組合(也稱為八進位制數)來指定的。這裡,第一個數字對應於檔案所有者,第二個數字對應於組使用者,第三個數字對應於其他使用者。在絕對模式下指定許可權的基本語法是::

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
chmod <options> <permission_combination> <file_name>
chmod <options> <permission_combination> <file_name>
chmod <options> <permission_combination> <file_name>

你可以使用不同的數字組合來獲取許可權:

許可權型別 數字
無許可權 0
執行 1
寫入 2
寫入 + 執行 3 (i.e. 2+1)
讀取 4
讀取 + 執行 5 (i.e. 4+1)
讀取 + 寫入 6 (i.e. 4+2)
讀取 + 寫入 + 執行 7 (i.e. 4+2+1)

讓我們看一個例子,使之更容易理解。假設你想為 “test.txt” 檔案的所有使用者設定讀、寫和執行的許可權,那麼使用這個命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
chmod -v 777 test.txt
chmod -v 777 test.txt
chmod -v 777 test.txt

所有使用者設定讀、寫和執行的許可權

這是一個在Linux系統中相當頻繁使用的命令,因此,我們準備了一份詳細的指南,說明在Linux中chmod 777的含義。

如果你想為檔案所有者設定只讀許可權,而對組和其他使用者沒有許可權,你可以使用這個命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
chmod -v 400 test.txt
chmod -v 400 test.txt
chmod -v 400 test.txt

為檔案所有者設定只讀許可權

chmod中的符號模式

絕對模式的主要問題是你總是要為所有的使用者提供許可權設定,即使你需要為一個使用者修改。

這就是符號模式開始發揮作用的地方。符號模式是比較常用的,因為它使用字母而不是數字,大多數使用者認為這很難理解。除了便於使用者使用外,你還可以用符號模式只為某個特定的使用者設定許可權,這與絕對模式不同。在chmod中使用符號模式改變檔案許可權的基本語法是:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
chmod <options> <user_type><symbol><permission_set> <file_name>
chmod <options> <user_type><symbol><permission_set> <file_name>
chmod <options> <user_type><symbol><permission_set> <file_name>

在上面的語法中:

  • <user_type>指定了你要為之設定許可權的使用者型別。
  • <symbol>指的是’-‘、’+’和’=’,分別表示’刪除’、’新增’和’等價’。
  • <permission_set>指的是你想為使用者設定的許可權。

在符號模式下,你可以將<user_types>指定為:

  • 檔案所有者為’u’
  • 群組使用者為’g’
  • 其他使用者為’o’
  • 所有使用者(三者的組合)為’a’或’ugo’。

對於<permission_set>部分,你可以使用以下任一組合:

許可權型別 符號
無許可權
執行 -x
寫入 -w-
寫入 + 執行 -wx
讀取 r-
讀取 + 執行 r-x
讀取 + 寫入 rw-
讀取 + 寫入 + 執行 rwx

現在讓我們看看一些例子,看看我們如何在Linux中使用符號模式設定許可權。假設你想為組設定執行許可權,那麼使用這個命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
chmod -v g+x test.txt
chmod -v g+x test.txt
chmod -v g+x test.txt

為組設定執行許可權

你甚至可以為不同的使用者型別設定多個許可權。例如,你想從其他使用者型別中刪除執行許可權,併為檔案所有者增加讀、寫和執行許可權:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
chmod o-x,u+rwx test.txt
chmod o-x,u+rwx test.txt
chmod o-x,u+rwx test.txt

從其他使用者型別中刪除執行許可權,併為檔案所有者增加讀、寫和執行許可權

在Linux中改變檔案/目錄的所有者和組

假設你需要擁有所有的許可權,但又不想與組內的使用者分享許可權。在這種情況下,你可以使用 chown (改變所有者)命令來改變檔案所有者。改變所有者的語法非常簡單:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
chown <new_user_name> <filename_or_directory_name>
chown <new_user_name> <filename_or_directory_name>
chown <new_user_name> <filename_or_directory_name>

例如,如果你想把檔案test.py的所有者改為root,你可以使用這個命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo chown root test.py
sudo chown root test.py
sudo chown root test.py

把檔案test.py的所有者改為root

注意:為了改變檔案所有者,你需要有root許可權。如果你沒有root許可權,那麼只需使用 ” sudo ” 命令來獲得root許可權。

如果你需要改變一個檔案的組,使用 chgrp 命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
chgrp <new_group_name> <filename_or_directory_name>
chgrp <new_group_name> <filename_or_directory_name>
chgrp <new_group_name> <filename_or_directory_name>

例如,如果你想把組改為test,使用 chgrp 命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo chgrp test test.txt
sudo chgrp test test.txt
sudo chgrp test test.txt

把組改為test

注意:沒有兩個組可以是同一個檔案/目錄的所有者。如果你想知道如何將一個新的使用者新增到一個組,請檢視我們關於如何將一個新使用者新增到一個組的指南。

管理檔案許可權是最重要的,特別是在多使用者環境中。通過定期檢查你的Linux系統上的檔案許可權,你可以確保你的敏感檔案保持安全,不被人窺視。我們希望這篇文章能幫助你理解這個基本概念,如果你有任何疑問,請在評論中告訴我們。

評論留言