CodeGym /Adesua ahorow /Docker SELF /訪問權限基礎:chmod, chown, umask

訪問權限基礎:chmod, chown, umask

Docker SELF
等級 2 , 課堂 0
開放

訪問權限基礎:chmod, chown, umask

1. 訪問權限的概念

當你操作 Linux 裡的檔案或目錄時,經常會需要管理他們的訪問權限。想像一下,你把你的襪子放在公開的地方,現在家裡的每個人都可以使用它們!Linux 的訪問權限讓你可以避免“未經授權的使用襪子”(或更重要的,例如你的 script)。讓我們開始了解吧。

在 Linux 中,每一個檔案(和目錄)都有三組訪問權限,這些權限能決定誰可以讀取、寫入或執行它們:

  1. 讀取 (r): 允許查看文件內容或目錄中的文件列表。
  2. 寫入 (w): 允許修改文件內容或在目錄中新增/刪除文件。
  3. 執行 (x): 允許將文件作為程序運行(或者進入目錄)。

三層模型

每個權限適用於三個使用者群體:

  • 擁有者 (owner): 創建文件的人。
  • 群組 (group): 被分配到文件的用戶群組。
  • 其他人 (others): 系統中的所有其他用戶。

文件的訪問權限示例:

-rwxr-xr--

解讀內容:

  • 第一個符號 - 表示這是一個文件(目錄為 d)。
  • 前三個符號 rwx — 擁有者的權限(讀取、寫入、執行)。
  • 接下來的三個符號 r-x — 群組的權限(讀取、執行)。
  • 最後的三個符號 r-- — 其他人的權限(僅讀取)。

2. 指令 chmod:管理權限

符號格式的寫法

指令 chmod 會改變檔案和目錄的權限。符號格式的寫法如下:

chmod [誰][操作][權限] 文件名
  • 誰: u (擁有者), g (群組), o (其他), a (全部)。
  • 操作: + (增加權限), - (移除權限), = (精確設定權限)。
  • 權限: r (讀取), w (寫入), x (執行)。

範例:


# 為所有人設置執行權限
chmod a+x script.sh

# 只為群組增加寫入權限
chmod g+w file.txt

# 移除其他人的讀取權限
chmod o-r document.txt

八進位格式寫法

八進位格式(或稱數字格式)更簡潔,但需要了解“數字魔法”。在這種格式中,每一組權限都用數字表示:

  • r = 4
  • w = 2
  • x = 1

權限會相加:

  • rwx = 7 (4 + 2 + 1)
  • rw- = 6 (4 + 2)
  • r-- = 4

寫法格式:

chmod [數字][數字][數字] 文件名

範例:


# 設置擁有者有rwx權限,群組有r-x權限,其他人有r--權限
chmod 754 file.sh

3. 更改檔案擁有者:指令 chown

如果你需要把檔案交給其他用戶(或群組),chown 指令會幫到你。

格式:

chown [用戶]:[群組] 檔案名稱

範例:


# 轉移檔案擁有權給用戶 user1
chown user1 myfile.txt

# 轉移擁有者和群組
chown user1:group1 myfile.txt

# 僅更改群組
chown :group2 myfile.txt

4. 預設遮罩:umask

當你建立文件時,系統會為其設定權限。例如,權限可能是 rw-r--r--。但這些權限是從哪裡來的呢?答案是:來自命令 umask

什麼是 umask

umask 定義了哪些權限不會被設定在新文件上。

例如:

  • 文件的基本權限集合:666(無執行權)。
  • 遮罩:022
  • 最終權限:644666 - 022)。

命令:

  • 查看當前遮罩:umask
  • 設定新遮罩:umask 0022

範例:


# 設定遮罩,讓新的文件具有 rw-rw-r--
umask 0002

5. 管理員權限與 sudo

什麼是 sudo

sudo(即 "superuser do" 的縮寫)是 Linux 和類 Unix 系統中的一個命令,允許用戶以 超級用戶(root)或其他擁有高級權限的用戶身份執行指令。

sudo 系統提供臨時的管理訪問權限,而無需長時間以 root 帳戶運行,這降低了系統因意外或惡意行為而被修改的風險。

重要!

簡單來說,sudo 是添加在需要以管理員權限執行的命令前的指令。

sudo 如何運作?

執行命令:

當你輸入帶有 sudo 的指令時,系統會檢查當前用戶是否有權執行具高權限的指令。

例如:

sudo apt update

驗證:

第一次在當前會話使用 sudo 時,系統會要求輸入當前用戶的密碼(非 root)。

成功輸入密碼後,系統會在短時間內(通常 5-15 分鐘)保存驗證狀態,這樣就不需要每次執行指令都再次輸入密碼。

執行指令:

若用戶擁有 sudo 配置中指定的權限,指令便會以超級用戶權限執行。

sudo 的主要功能與命令

以高權限執行指令:

sudo <命令>

例如:

sudo apt install nginx

以其他用戶身份執行指令: 使用選項 -u:

sudo -u <用戶名> <命令>

例如:

sudo -u user1 ls /home/user1

獲取管理員終端: 啟動帶有 root 權限的 shell:

sudo -i

或者:

sudo su

查看 sudo 的配置:

sudo -l

顯示當前用戶能執行的命令。

編輯 sudo 的配置:

sudo visudo

此命令打開 /etc/sudoers 配置文件以進行安全編輯。

6. 示例

來試著把我們的知識應用到實際操作中。

任務 1: 使用 chmod 管理權限

  1. 創建一個文件:

    touch myfile.txt
    
  2. 給文件的所有者設置讀取、寫入和執行權限:

    chmod u+rwx myfile.txt
    
  3. 為其他用戶只添加讀取權限:

    chmod o+r myfile.txt
    
  4. 檢查權限設置:

    ls -l myfile.txt
    

任務 2: 使用 chown 更改所有者

  1. 創建一個文件:

    touch ownedfile.txt
    
  2. 更改文件所有者為用戶 user1(需要管理員權限):

    sudo chown user1 ownedfile.txt
    
  3. 檢查更改結果:

    ls -l ownedfile.txt
    

任務 3: 使用 umask 進行實驗

  1. 檢查當前的掩碼:

    umask
    
  2. 設置掩碼為 027

    umask 027
    
  3. 創建一個新文件:

    touch newfile.txt
    
  4. 檢查新創建文件的權限:

    ls -l newfile.txt
    

7. 常見錯誤和特點

  1. 忘記在改變擁有者時使用 sudo 只有管理員能改變文件的擁有者。如果你收到 "Operation not permitted" 的錯誤信息,試試加上 sudo
  2. chmod 命令中順序錯誤: 更改了錯誤的對象。確認你選擇的是正確的文件或目錄。
  3. umask 只影響新的文件: 如果你試圖通過 umask 更改已存在文件的權限,那是不會起作用的。請使用 chmod

你知道嗎?Linux中的訪問權限非常靈活,你甚至可以創建一個"全宇宙只有一個人能看到"的文件!正如所說,擁有巨大的權力也意味著巨大的責任!現在,掌握了 chmod, chownumask,你已經準備好讓你的Linux系統不僅方便使用,還更加安全了。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION