[Linux] #2 chmod - antqtech/KM GitHub Wiki

Linux chmod 指令介紹

chmod(change mode)是 Linux 中用來修改檔案或目錄的權限(permissions)的指令。每個檔案或目錄在 Linux 系統中都擁有一組權限,這些權限決定了使用者、群組和其他使用者對該檔案或目錄能執行的操作,例如讀取、寫入或執行。

1. 權限的基本概念

Linux 中的檔案權限主要分為三個層級:

  • 所有者(Owner):檔案的擁有者。
  • 群組(Group):擁有該檔案的群組。
  • 其他使用者(Others):所有其他未屬於檔案擁有者或群組的使用者。

每個層級的權限有三種基本操作:

  • r(Read):讀取檔案內容。
  • w(Write):修改檔案內容。
  • x(Execute):執行檔案(對於檔案為程式檔案或可執行檔案有效)。

2. chmod 基本語法

chmod [選項] 模式 檔案或目錄
  • 選項(Options):可選,用來改變指令的行為(如 -R 進行遞迴操作)。
  • 模式(Mode):用來指定權限,可以使用數字或字母的方式來設定。
  • 檔案或目錄(File/Directory):指定需要修改權限的檔案或目錄。

3. 設定權限的方式

chmod 可以使用兩種主要方式來設定檔案權限:數字模式和符號模式。

3.1 數字模式(Octal mode)

在數字模式中,每個權限對應一個數字,並使用這些數字來表示檔案的權限。數字模式由三個數字組成,分別代表檔案的所有者、群組和其他使用者的權限。

權限 數字
r 4
w 2
x 1
無權限 0

數字是根據權限的組合來設定的。例如:

  • 7 代表 rwx(讀、寫、執行)。
  • 6 代表 rw-(讀、寫)。
  • 5 代表 r-x(讀、執行)。
  • 4 代表 r--(讀)。

例如,chmod 755 file.txt 表示設定 file.txt 檔案的權限為:

  • 所有者:rwx(讀、寫、執行)
  • 群組:rx(讀、執行)
  • 其他使用者:rx(讀、執行)
3.2 符號模式(Symbolic mode)

符號模式使用字母來表示權限設定。符號模式通常比數字模式更具可讀性,主要使用以下符號:

  • u:代表所有者(User)。
  • g:代表群組(Group)。
  • o:代表其他使用者(Others)。
  • a:代表所有使用者(All),即 ugo

操作符:

  • +:增加權限。
  • -:移除權限。
  • =:設置精確的權限。

例如:

  • chmod u+x file.txt:為檔案所有者增加執行權限。
  • chmod go-w file.txt:為群組和其他使用者移除寫入權限。
  • chmod a=r file.txt:為所有使用者設置為只讀權限。
3.3 結合數字與符號模式

chmod 也可以同時使用數字和符號來設定權限。例如:

chmod 755 file.txt
chmod u+x file.txt

兩者的效果相同,都是為檔案所有者增加執行權限。

4. chmod 常用選項

  • -R:遞迴地修改目錄及其所有子目錄的權限。例如,chmod -R 755 /path/to/directory 將會修改指定目錄及其所有子目錄的權限。
  • -v:顯示修改過程,顯示每一檔案權限變更的詳細資訊。
  • --reference=file:將另一個檔案的權限設定應用於指定檔案。例如,chmod --reference=file1 file2 會將 file1 的權限複製到 file2

5. 範例

  • 為檔案 myfile.txt 設定權限,只有檔案所有者可以讀、寫、執行,群組和其他使用者只有讀取權限:

    chmod 744 myfile.txt
    
  • 為目錄 /home/user/ 設定權限,使所有使用者都能讀取和進入該目錄,但只有檔案所有者能夠寫入:

    chmod -R 755 /home/user/
    
  • 移除群組和其他使用者的寫入權限,並允許所有者執行:

    chmod go-w file.txt
    chmod u+x file.txt