你是否曾经陷入了复杂的Linux权限世界中?如果你仍然想知道谁能读取、写入或执行什么,那么你来对地方了。解密Linux权限的复杂艺术,重点关注强大的二人组:chmod
和chown
!
在本教程中,你将掌握自信地控制文件和目录访问权限的技巧。
现在卷起袖子,像冠军一样征服Linux权限!
先决条件
在深入了解Linux权限之前,请确保你拥有一台Linux机器以掌握chmod
和chown
命令。本教程使用Ubuntu 22.04 LTS(Jammy Jellyfish)。
掌握chmod
和chown
命令
在Linux权限的领域中,chmod
和chown
命令拥有重要的作用。了解如何有效使用这些命令对于任何Linux用户来说都至关重要,无论是初学者还是经验丰富的管理员。
这两个命令都提供了许多控制Linux系统的方法,但以下是它们各自的基本功能:
chmod
– 这个命令是在Linux中管理文件和目录权限的关键,它允许你指定谁可以读取、写入和执行一个文件。通过使用符号和数字代码的组合,你可以授予或限制用户、组和其他人的访问权限。chown
– 使用此命令,您可以更改文件和目录的所有權。當您需要轉移管理控制權或更改文件與用戶/組之間的關聯時,此命令非常寶貴。
無論是保護敏感數據還是為團隊提供更簡化的訪問,這些命令都是您在 Linux 文件操作領域中可靠的伴侶。
繼續閱讀,深入了解這些命令的細微差別。
列出文件和查看權限
在使用 chmod
和 chown
命令更改權限和所有權之前,首先要做的是列出文件並查看它們的權限。
就像在圖書館中查找書籍一樣,在 Linux 中,您經常需要查看文件列表以及它們的相關權限。這些知識對於有效的文件管理至關重要。
要查看文件或目錄的權限:
打開終端並執行以下 ls
命令,以長格式 (-l
) 列出當前工作目錄中的所有文件和目錄
長格式提供了有關每個文件或目錄的詳細信息,如下所示。
這些信息包括權限、鏈接數、所有者、組、大小和修改時間。但您現在的重點是文件權限。

三個關鍵權限管理每個檔案和目錄:讀取(r)、寫入(w)和執行(x)。每個權限都決定了使用者如何與每個檔案和目錄的內容進行交互。
此外,這些權限中的每一個都應用於三個不同的擁有者類別:擁有者、群組和其他人(既不是擁有者也不是群組成員的使用者)。
以下說明了檔案權限的每個部分:
- 第一個字符表示一個檔案(–)或一個目錄(d)。
- 第一部分(rw-) – 提供擁有者讀取和寫入權限,但不包括執行權限。
- 第二部分(rw-) – 授予群組讀取和寫入權限,但不包括執行權限。
- 最後一部分(r–) – 允許其他人讀取,但不允許寫入或執行。

通過chmod
命令修改權限:符號模式
擴展對檔案權限的理解,深入研究修改權限的強大工具。想像著以精確的方式調整誰可以訪問、修改或執行一個檔案或目錄。chmod
命令(更改模式)賦予您掌控Linux系統的權力。
當您需要以靈活而富有表達力的方式精確控制對檔案和目錄的訪問權限時,符號模式將派上用場。
要使用chmod
命令通過符號模式修改權限,請按照以下步驟進行:
1. 執行以下who
命令來創建一個新文件(>
),名為user.txt
,作為非特權用戶,其中包含您的Linux機器上當前已登錄的用戶列表。
此命令不會在終端上提供輸出,但您將在接下來的步驟中驗證文件的權限。
2. 接下來,運行以下命令來查看user.txt
文件的權限。
下面,您可以看到文件的默認權限,所有者,創建的日期和月份,以及文件名。
請注意當前文件權限,因為您稍後將進行比較。現在您的焦點是用戶權限(rw-)。

3. 現在,運行以下命令來刪除(-
)所有者(u
)的寫入(w
)權限,保留其他類別的每個權限不變。
下表解釋了每個符號代表的含義:
User Symbol | Details | Operation Symbol | Details | Permission Symbol | Details |
---|---|---|---|---|---|
u | Owner | + | Add permissions | r | Read |
g | Group | – | Remove permissions | w | Write |
o | Others | = | Set permissions explicitly | x | Execute |
成功後,chmod
命令在終端上不會輸出,這適用於本教程中的所有步驟。
4. 更改權限後,運行以下命令來查看user.txt
文件的權限。
將步驟二中您記錄的文件權限(rw-)與下面的權限進行比較。請注意,所有者(u)現在僅具有讀取權限(r–)。

5. 現在,執行以下每個命令以執行以下操作:
- 對相同的
user.txt
文件給予擁有者(u
)添加(+
)、寫入(w
)和執行(x
)權限。 - 查看
user.txt
文件的信息,以驗證修改的權限。
如下所示,現在用戶對user.txt文件擁有讀取、寫入和執行權限(rwx)。

6. 與其添加,這次運行以下chmod
命令來刪除(-
)以下權限:
- 擁有者(
u
)的執行(x
)權限。 - 群組(
g
)的寫入(w
)權限。 - 其他人(
o
)的所有權限(rwx
)。
這個命令允許你以單個命令同時從不同類別中刪除權限。
這次,-v
選項告訴chmod
顯示有關操作所做更改的消息。

7. 接下來,運行以下命令執行以下操作:
- 對所有類別添加(
+
)讀取(r
)權限。 - 刪除所有(
a
)類別的寫入和執行(wx
)權限。
8. 現在,執行以下命令查看user.txt
文件的更新權限。

? 或者,你可以使用以下命令修改所有三個類別(用戶、群組和其他人)的相同權限:
chmod ugo-r
– 刪除 (-
) 所有三個類別 (ugo
) 的讀取權限 (r
)。
chmod ugo+r
– 添加 (+
) 所有三個類別 (ugo
) 的讀取權限 (r
)。
9. 最後,執行以下命令執行以下操作:
chmod
– 設置 (=
) 所有者和組的讀寫權限 (rw
),並刪除其他人的權限 (o=
)。
這個=
符號讓您可以明確設置權限並覆蓋任何現有的權限。 如果在=
符號之後沒有指定權限,則刪除該類別的所有權限。ls
– 查看您對user.txt
文件權限所做的更改。

使用 chmod
命令調整訪問權限:八進制模式
想像一下能夠迅速而準確地設置文件權限,而不需要符號表示法的複雜性。 八進制模式 (八進制表示法) 將成為您管理權限的新方法。
在八進制模式 (八進制表示法) 中,權限使用四位或三位數字表示,從 0 到 7。 每個數字對應於所有者、組和其他人的特定權限集,如下所示:
- 讀取 (r) = 4
- 寫入 (w) = 2
- 執行 (x) = 1
- 沒有權限 (-) = 0
為了了解八進制模式如何管理文件權限,請執行以下步驟:
1. 執行以下chmod
命令,將以下權限(664
)添加到user.txt
文件:
- 擁有者 – 讀取(
4
)+ 寫入(2
)+ 執行(0
)=6
- 組 – 讀取(
4
)+ 寫入(2
)+ 執行(0
)=6
- 其他人 – 讀取(
4
)+ 寫入(0
)+ 執行(0
)=4
在Linux中使用chmod
命令設置文件權限時,四位數字中的前一位數(最左邊)表示特殊權限,如setuid、setgid和黏著位。接下來的三個數字分別代表擁有者、組和其他人的標準權限。
但是,當使用三位數字時,第一位表示文件的擁有者(u
)的權限,第二位表示文件的組(g
)的權限,最後一位表示其他人(o
)的權限。
在許多情況下,特別是當不涉及特殊權限時,您可能只會看到三位數字的表示法。前導零表示八進制表示法,可以被暗示並因此被省略。就像下面的例子中,您可以使用664
而不是0664
。
2. 接下來,運行以下命令查看user.txt
文件的權限。
在下面的輸出中,您可以看到為user.txt文件設置的權限以符號模式顯示,這相當於八進制模式中的664。

3. 現在,運行下面的stat
命令,查看有關user.txt
文件的全面統計信息,包括符號和八進制模式中的權限。
在訪問屬性上,如下所示,您將看到與user.txt文件的文件權限相關的八進制和符號模式。
有了這些信息,您可以增強您對使用八進制模式調整權限的理解。

使用chown
命令更改文件所有權
儘管權限決定了對文件或目錄可以執行哪些操作,但您可以指定誰有權利設置或修改這些權限,方法是更改所有權。
chown
命令(更改所有者)是管理文件和目錄所有權的主要命令。與chmod
命令一樣,chown
命令是一個僅限根用戶的命令 — 僅根用戶可以更改文件或目錄的所有權。
要使用chown
命令管理所有權,請按照以下步驟進行:
1.運行以下命令創建一個名為bill
的用戶(useradd
),並提供一個強密碼。
您需要在本地機器上除了默認用戶(您)之外,還有多個用戶,以查看如何更改所有權的工作原理。

2. 接下來,執行以下每個命令,將當前登錄的用戶列表(who
)寫入一個名為new.txt
的文件中,作為非特權用戶,並查看(ls
)其所有者和權限。
以下是輸出,顯示文件所有者是mercy。

3. 確認所有者後,運行以下chown
命令來將new.txt
文件的所有者更改為bill
。
與chmod
命令類似,chown
命令不提供輸出,但您將在下一步驟中驗證所有者更改。
4. 現在,運行以下命令來查看(ls
)new.txt
文件的新所有者。
以下輸出確認您已成功將new.txt文件的所有者更改為bill,現在他對該文件具有控制和權限。

執行chown
命令以修改組所有權
在Linux文件系統中,每個文件和目錄不僅與個別所有者相關,還與一個組相關聯。就像一個音不準的樂器可能會破壞整個合奏一樣,不正確的所有權可能會導致潛在問題。
您應該擔心嗎?實際上不用。組關聯允許以分層方式設置文件權限。該方法使多個用戶可以根據組成員資格進行協作並共享訪問權限。
修改組擁有權,請完成以下步驟:
1. 執行以下命令以查看與new.txt
文件關聯的組。

2. 接下來,運行以下命令,它們不提供輸出,但執行以下操作:
- 創建一個組(
groupadd
)名為developers
。 - 更改
new.txt
文件的組(chown
)擁有權為developers
。
? 或者,可以使用以下命令之一,以遞歸方式更改文件或整個目錄的所有者和組擁有權。
sudo chown -R john:finance-group user.txt
sudo chown -R john:finance-group ~/Desktop
3. 現在,重新運行以下命令以查看(ls
)new.txt
文件的新組擁有權。
下面,輸出確認您已成功將new.txt文件的組擁有權更改為developers。

通過數字 UID 和 GID 更改文件擁有權
儘管用戶名和組名提供了一種人類可讀的方式來識別文件所有者,但每個用戶和組也與唯一的數字標識符相關聯。
這些唯一的數字標識符是用戶 ID(UID)和組 ID(GID)。它們提供了一種明確的方式來在具有重疊或相似用戶和組名的環境中設置文件擁有權。
要使用數字 UID 和 GID 更改擁有權,請執行以下步驟:
1. 執行以下命令以列出有關new.txt
文件的信息(ls
)。
-n
選項告訴ls
命令顯示數字型UID和GID,而不是解析為相應的用戶和組名。
請注意與new.txt
文件關聯的UID和GID,因為您將需要它們來在後續步驟中進行比較。

2. 接下來,運行以下getent
命令以獲取您希望設置為文件所有權的用戶和組的UID和GID。
確保用您偏好的用戶名和組名替換<username>
和 <groupname>
占位符。
注意以下輸出中的UID(即,1002)和GID(即,1005),因為您將需要它們來在下一步中更改所有權。
默認情況下,當在Linux中創建用戶時,將同名的組也創建為用戶。 這個組作為用戶的主要組,並自動添加到這個主要組中。
因此,用戶john
的GID與finance
組的GID不同。 除非明確將用戶添加到組中,否則它們的相應GID保持不同。

3. 接下來,運行以下命令來更改new.txt
文件的所有權和組所有權。 請確保用步驟二中注意到的UID(1002
)和GID(1005
)替換它們。
? 請注意,使用數字 UID 和 GID 可能比使用使用者名稱和群組名稱不夠可讀。因此,請確保您正在使用正確的數字,以避免意外變更。
4. 最後,重新運行下面的命令以列出有關 new.txt
檔案的資訊(ls
),並驗證檔案所有權的變更。
將您在第一步中注意到的 UID 和 GID 與下面的數字進行比較。請注意,新檔案所有權已從 1001:1003 更改為 1002:1005。

結論
您剛剛開始全面探索 Linux 權限,掌握了關鍵命令,如 chmod
和 chown
。在本教程中,您已經熟練地使用符號模式和八進制模式修改了權限。
您還獲得了管理檔案所有權和群組分配的技能,無論是通過名稱還是通過數字 UID 和 GID。憑藉對 chmod
和 chown
的新發現,您現在擁有強大的工具來管理 Linux 系統中的訪問和所有權。
但是,為什麼不進一步增強您的 Linux 熟練度呢?也許考慮深入研究高級訪問控制方法,包括 存取控制清單(ACL)?以實現對檔案和目錄權限的更精確控制!