Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 權限管理核心:chown 與 chmod 差異詳解與實戰範例

編輯:Linux 教學

前言

chown(Change Owner)與 chmod(Change Mode)是 Linux 權限管理的雙支柱。chown 控制「誰擁有」(使用者/群組),chmod 控制「能做什麼」(讀/寫/執行)。兩者職責截然不同但緊密配合,本文系統整理語法、參數、數字與符號模式、遞迴操作、特殊權限位,並提供實戰範例與常見錯誤避坑指南。

一、chown:變更檔案擁有者與群組

語法

chown [選項] [使用者][:群組] 檔案...
chown [選項] :群組 檔案...        # 僅變更群組

核心參數

  • -R / --recursive:遞迴處理目錄樹
  • -h / --no-dereference:修改符號連結本身而非目標檔案
  • -v / --verbose:顯示變更細節
  • -c / --changes:僅顯示實際變更的檔案
  • --reference=參考檔案:複製參考檔案的擁有者/群組

實戰範例

# 單一檔案變更擁有者
chown alice report.pdf

# 變更擁有者與群組
chown alice:developers project/

# 遞迴變更整個目錄樹
chown -R bob:staff /home/bob

# 僅變更群組(等同 chgrp)
chown :admins /etc/sudoers.d/

# 修改符號連結本身擁有者
chown -h www-data:www-data /var/www/html/link

# 複製參考檔案權限
chown --reference=/etc/passwd /tmp/new_passwd

權限要求:僅 root 可變更檔案擁有者;一般使用者若屬於目標群組,可將自己擁有的檔案群組變更為該群組。

二、chmod:變更檔案存取權限

權限三要素

代碼權限數值對檔案意義對目錄意義
r讀取4查看內容列出目錄清單
w寫入2修改內容建立/刪除/重命名檔案
x執行1執行程式/腳本進入目錄、存取目錄內檔案

三類身份

  • u (user):檔案擁有者
  • g (group):所屬群組成員
  • o (other):其他使用者
  • a (all):以上三者

符號模式語法

[ugoa...][+-=][rwxXstugo...][,...]
+ 增加  - 移除  = 設定(移除未指定權限)
X:僅目錄或已有任一 x 位才生效(避免檔案誤加執行權)
s:SUID/SGID
t:Sticky bit

數字模式(八進位)

chmod 755 file    # u=rwx(7) g=rx(5) o=rx(5)
chmod 644 file    # u=rw(6) g=r(4) o=r(4)
chmod 700 dir     # 僅擁有者可進入
chmod 1777 /tmp   # Sticky bit:僅擁有者可刪除自己的檔案
chmod 4755 /bin/su  # SUID:執行時具擁有者權限
chmod 2775 /shared  # SGID:新檔繼承群組

核心參數

  • -R:遞迴處理
  • -v、-c:顯示細節/僅變更
  • --reference=檔案:複製參考檔案權限

實戰範例

# 擁有者加執行權
chmod u+x script.sh

# 所有人可讀
chmod a+r README.md

# 擁有者/群組可寫,其他不可寫
chmod ug+w,o-w file1 file2

# 遞迴:目錄加 x,檔案不加 x(X 技巧)
chmod -R a+rX /var/www/html

# 特殊權限
chmod 4755 /usr/bin/passwd   # SUID
chmod 2775 /home/shared      # SGID
chmod 1777 /tmp              # Sticky bit

三、chown vs chmod 核心差異對照

維度chownchmod
控制對象擁有者(User)與群組讀/寫/執行權限位
核心問題「誰擁有」「能做什麼」
權限要求僅 root 可改擁有者擁有者或 root 可改權限
群組變更chown :group / chgrpchmod g+rwx
遞迴參數-R-R
特殊功能--reference 複製擁有者SUID/SGID/Sticky/X 位

四、常見實務場景組合拳

場景 1:部署 Web 應用(Nginx + PHP-FPM)

# 建立專用使用者
useradd -r -s /sbin/nologin www-data

# 程式碼目錄:擁有者可寫,Nginx 僅讀
chown -R deploy:www-data /var/www/app
chmod -R 750 /var/www/app
chmod 770 /var/www/app/storage /var/www/app/bootstrap/cache

# 上傳目錄:啟用 SGID 確保新檔群組正確
chmod 2770 /var/www/app/public/uploads

場景 2:多使用者共享專案目錄

groupadd developers
usermod -aG developers alice
usermod -aG developers bob

mkdir /projects/awesome
chown root:developers /projects/awesome
chmod 2775 /projects/awesome  # SGID:新檔自動屬於 developers 群組

場景 3:修復權限混亂

# 將目錄權限統一為 755,檔案 644
find /path -type d -exec chmod 755 {} \;
find /path -type f -exec chmod 644 {} \;

# 或使用 X 技巧一步到位
chmod -R a=rX,u+w /path

五、避坑指南

  1. 遞迴操作前必先備份或測試:chmod -R 777 / 會毀滅系統安全性
  2. 區分檔案與目錄的 x 權限:目錄需 x 才能進入,檔案通常不需 x(腳本/執行檔除外)
  3. Sticky bit 保護共享目錄:/tmp、/var/mail 必須設定 1777
  4. SUID/SGID 縮小攻擊面:僅必要二進制檔(如 passwd、sudo、ping)設定
  5. 符號連結不跟隨:對連結檔操作請加 -h

結語

chown 決定身份,chmod 決定能力。精通符號模式(u+rwX)、數字模式(750)、特殊位(4755/2775/1777)與遞迴策略,配合 find 批次操作,即可構建安全、可維護的 Linux 權限體系。記住核心原則:最小權限原則——僅授予完成任務所需的最低權限。

Copyright © Windows教程網 All Rights Reserved