一、文件權限基礎:權限是什麼?¶
在Ubuntu(Linux系統)中,每個文件和目錄都有一套權限規則,用來控制誰能對它做什麼。簡單來說,權限就像一把“鑰匙”,決定了不同用戶(所有者、所屬組、其他用戶)能對文件/目錄執行哪些操作。
- 三個核心角色:
- 所有者(User,簡稱u):創建文件的用戶,默認擁有最高權限。
- 所屬組(Group,簡稱g):文件所屬的用戶組,組內用戶共享權限。
-
其他用戶(Others,簡稱o):系統中除所有者和組外的其他用戶。
-
三個權限類型:
- 讀(r):可以查看文件內容(對目錄而言,是“列出目錄內容”)。
- 寫(w):可以修改文件內容或目錄結構(如新建/刪除文件)。
- 執行(x):文件可運行(對目錄而言,是“進入目錄”)。
舉個例子:把文件比作“房間”,所有者是“房主”,組是“室友”,其他用戶是“訪客”。
- 房主(u)可以開門(r)、裝修(w)、開燈(x);
- 室友(g)可以開燈(r)、簡單整理(w);
- 訪客(o)只能看一眼(r),不能進入。
二、chmod命令:修改權限的工具¶
chmod是“change mode”的縮寫,專門用來修改文件/目錄的權限。它有兩種常用語法:符號表示法和數字表示法,初學者建議從符號表示法入手,靈活易懂。
2.1 符號表示法:用“角色+操作+權限”組合¶
語法:chmod [用戶角色][操作][權限] 目標文件/目錄
- 用戶角色:u(所有者)、g(組)、o(其他)、a(所有用戶)。
- 操作:+(添加權限)、-(移除權限)、=(設置權限,覆蓋原有權限)。
- 權限:r(讀)、w(寫)、x(執行)。
常見例子:
1. 給文件test.txt的所有者添加執行權限
chmod u+x test.txt
解釋:u+x = 所有者(u)+ 執行權限(x),執行後所有者可運行這個文件(如腳本)。
- 給目錄docs的組用戶移除寫權限
chmod g-w docs
解釋:g-w = 組(g)- 寫權限(w),組用戶將無法修改docs目錄內的文件。
- 給所有用戶設置只讀權限
chmod a=r filename
解釋:a=r = 所有用戶(a)= 只讀權限(r),所有人只能讀,不能修改/執行。
- 給所有者和組同時添加執行權限
chmod u+x,g+x myfile.sh
解釋:同時對所有者(u)和組(g)添加執行權限,操作多個目標用逗號分隔。
2.2 數字表示法:用“三位數字”直接組合權限¶
語法:chmod [u權限][g權限][o權限] 目標文件/目錄
- 三位數字含義:
- 第一位(u):所有者的權限總和(0-7)。
- 第二位(g):所屬組的權限總和(0-7)。
- 第三位(o):其他用戶的權限總和(0-7)。
- 權限對應數字:r=4,w=2,x=1(可疊加),例如:
- rwx = 4+2+1 = 7
- r-x = 4+0+1 = 5
- rw- = 4+2+0 = 6
- –x = 0+0+1 = 1
- — = 0+0+0 = 0
常見例子:
1. 給文件script.sh設置“所有者可讀寫執行,組和其他用戶只讀”
chmod 754 script.sh
解釋:
- 第一位7(4+2+1)= rwx(所有者全權限);
- 第二位5(4+1)= r-x(組只讀+執行);
- 第三位4(4)= r–(其他用戶只讀)。
- 給目錄data設置“所有者全權限,組和其他用戶無權限”
chmod 700 data
解釋:
- 第一位7 = rwx(所有者可讀寫執行);
- 第二位0 = —(組無權限);
- 第三位0 = —(其他用戶無權限)。
- 給文件config設置“所有用戶只讀”
chmod 444 config
解釋:三位都是4(r),即所有人只能讀,不能修改/執行。
三、修改目錄權限的特殊說明¶
目錄的權限與文件不同,需特別注意:
- 目錄的“執行(x)”權限:代表能否進入目錄(如cd mydir需要mydir有x權限)。
- 目錄的“寫(w)”權限:代表能否在目錄內創建/刪除文件(如touch myfile需要目錄有w權限)。
示例:
要讓用戶能進入並修改目錄mydir內的文件,需給mydir添加:
chmod +wx mydir # 所有者+組+其他用戶?建議最小權限:chmod 755 mydir
解釋:
- +w:允許在目錄內創建/刪除文件;
- +x:允許進入目錄(cd mydir);
- +r:允許列出目錄內容(ls mydir)。
四、注意事項與常見問題¶
- 最小權限原則:僅給必要用戶分配必要權限,避免
777(所有人可讀寫執行,風險極高)。
# 安全示例:腳本文件僅所有者可修改,組和其他用戶只讀執行
chmod 755 script.sh # 7(rwx), 5(r-x), 5(r-x)
- 目錄權限不足導致操作失敗:
若提示“Permission denied”,可能是目錄無x權限(無法進入)或無r權限(無法查看內容)。解決:
chmod +rx mydir # 給目錄添加讀+執行權限
- 區分文件與目錄的“執行”權限:
- 文件的x是“運行文件”(如./a.sh);
- 目錄的x是“進入目錄”(如cd mydir)。
總結¶
chmod是Linux權限管理的核心工具,通過符號表示法(靈活調整)和數字表示法(快速批量設置),你可以輕鬆修改文件/目錄權限。記住:權限要“夠用就好”,優先保障系統安全。
現在,打開終端嘗試給一個測試文件設置權限吧!比如:
# 創建測試文件
touch test.txt
# 給所有者加寫權限,組和其他用戶加讀權限
chmod u+w,g+r,o+r test.txt
# 查看權限(ll命令)
ll test.txt
你會看到類似 -rw-r--r-- 的輸出,說明所有者有讀寫權限,組和其他用戶只有讀權限,完美!