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 文件權限管理:touch、chmod 與權限位深度解析

編輯:Linux 教學

在 Linux 系統管理中,文件創建與權限控制是基礎且關鍵的技能。本文通過實例講解 touch 創建文件、chmod 修改權限,並深入剖析權限位的含義與數字表示法。

touch:不只是創建空文件

touch /etc/init.d/httpd

touch 的主要用途:

  • 創建空文件:若文件不存在,創建一個大小為 0 的文件。
  • 更新時間戳:若文件已存在,將其訪問時間(atime)和修改時間(mtime)更新為當前時間,不改變內容。
  • 構建腳本依賴:在編譯構建中,touch 常用於強制重新編譯某目標文件(通過將其時間戳設為最新,使 make 認為源文件已更新)。

chmod 755:權限數字碼背後的邏輯

chmod 755 /etc/init.d/httpd

Linux 文件權限由 10 個字符表示(如 -rwxr-xr-x):

  • 第 1 位:文件類型(- 普通文件,d 目錄,l 鏈接等)。
  • 第 2-4 位:所有者權限。
  • 第 5-7 位:所屬組權限。
  • 第 8-10 位:其他用戶權限。

每組權限由 r(讀,值 4)、w(寫,值 2)、x(執行,值 1)三位組成,三值相加得八進制數字:

權限字符二進制八進制含義
rwx1117讀、寫、執行
rw-1106讀、寫
r-x1015讀、執行
r--1004僅讀

因此 755 拆解為:

  • 7(所有者):rwx 完全控制。
  • 5(所屬組):r-x 可讀、可執行,不可寫。
  • 5(其他用戶):r-x 同組權限。

對腳本文件(如 /etc/init.d/httpd),755 確保擁有者可修改,所有人可執行,是服務啟動腳本的標準權限。

符號模式:另一種授權方式

除數字模式,chmod 還支持符號模式,語法:[ugoa...][[+-=][rwxX]...][,...]

  • u=所有者,g=組,o=其他,a=所有(默認)。
  • + 增加,- 移除,= 精確設置。

示例:

chmod u+x script.sh        # 給所有者加執行權限
chmod go-w file.txt        # 移除組和其他用戶的寫權限
chmod a=rw,ug+x file.txt   # 所有人可讀寫,所有者和組額外可執行

特殊權限位:Setuid、Setgid、Sticky Bit

在三組權限之外,還有三個特殊位,顯示在執行位上(用 s/S/t/T 表示):

  • Setuid (u+s, 4000):執行文件時以文件所有者身份運行(如 /usr/bin/passwd 允許普通用戶修改 /etc/shadow)。
  • Setgid (g+s, 2000):文件執行時以文件所屬組身份運行;目錄設置後,新建文件繼承目錄所屬組,利於團隊協作。
  • Sticky Bit (o+t, 1000):目錄設置後,只有文件擁有者、目錄擁有者或 root 可刪除文件(如 /tmp 防止用戶誤刪他人文件)。

四位八進制表示:chmod 4755 (Setuid+755),chmod 2775 (Setgid+775),chmod 1777 (Sticky+777)。

最佳實踐建議

  1. 最小權限原則:僅授予完成任務所需的最低權限,避免濫用 777。
  2. 目錄需執行權限:進入目錄(cd)或訪問其下文件需目錄的 x 權限。
  3. 腳本需執行權限:Shell/Python 等腳本直接運行需 x;若用解釋器調用(bash script.sh)則只需 r。
  4. 謹慎使用 Setuid:僅在必要且代碼經審計的程序上設置,否則極易成為提權漏洞。
  5. 使用 ACL 精細控制:setfacl/getfacl 可為特定用戶/組授權,突破傳統 UGO 限制。

掌握 touch、chmod 及權限位本質,能讓你精準控制文件訪問,構建安全合規的 Linux 環境。

Copyright © Windows教程網 All Rights Reserved