755 授予讀寫執行權限:與 644 的差異

當你嘗試開啟伺服器上的資料夾時,可能會看到「Permission denied(權限遭拒)」錯誤。出現這種困惑,通常是因為沒有理解檔案權限。最簡單的答案是:755 會授予所有者讀取、寫入與執行權限,而 644 不允許任何人執行。
檔案權限對安全性至關重要。755 適用於資料夾與腳本,644 適用於 HTML、圖片等靜態檔案。掌握 Linux 檔案權限,有助於你設定正確的存取層級。你的 Web 伺服器程式碼依賴這些設定。要讓伺服器保持安全,就必須為每個應用程式正確設定權限。遵循這些規則,才能保護你的資料。
理解 755 為所有者授予讀取、寫入與執行權限
數字系統:讀取、寫入、執行的數值
Linux 檔案權限由一套簡單的數字代碼控制。每種權限類型都有自己的數值:讀取是 4,寫入是 2,執行是 1。你可以把這些數字組合起來,形成一個權限集。例如,7 表示讀取、寫入與執行(4+2+1);5 表示只有讀取與執行(4+1);4 表示只有讀取。
這套系統起源於電腦發展的早期。八進位表示法大約在 1969 年的 B 語言中開始使用,運行於 PDP-8 機器之上。八進位數字至今仍被使用,因為每一位數字都正好對應三位元的權限位。當你執行 chmod 755 時,本質上使用的就是程式設計師早年沿用至今的這套八進位系統。
| 八進位 | 二進位(rwx) | 含義 |
|---|---|---|
| 0 | 000 | 無權限 |
| 1 | 001 | 僅執行 |
| 2 | 010 | 僅寫入 |
| 4 | 100 | 僅讀取 |
| 7 | 111 | 讀取、寫入、執行 |
拆解 755 與 644 權限集
權限模式中的三位數字分別對應三類使用者。第一位表示所有者,第二位表示使用者群組,第三位表示其他所有人。對於 755,所有者擁有讀取、寫入與執行權限;使用者群組與其他人只有讀取與執行權限。
再來看 644。所有者擁有讀取與寫入權限;使用者群組與其他人只有讀取權限。除了所有者之外,任何人都不能執行任何內容。這一點在伺服器環境中非常重要。
| 使用者類別 | 755 權限 | 644 權限 |
|---|---|---|
| 使用者群組 | 讀取 + 執行 | 僅讀取 |
| 其他人 | 讀取 + 執行 | 僅讀取 |
了解 Linux 檔案權限的運作方式,有助於你做出正確選擇。chmod 指令用於設定這些權限。你會對資料夾執行 chmod 755,對一般檔案執行 chmod 644。這些 Linux 檔案權限既能防止伺服器被隨意更動,也能確保必要的操作正常進行。所有者擁有完整控制權,其他使用者則只保留有限存取權限。這種平衡讓伺服器既安全又可用。
執行位:檔案與目錄的差異
為什麼腳本與程式需要執行權限
執行位會改變系統對一個檔案的處理方式。對一般檔案而言,這個權限決定了你是否可以把它當作程式執行。沒有執行位,系統就會拒絕啟動該檔案。你看到的不會是預期輸出,而是一則錯誤訊息。
以 Web 伺服器上的 CGI 腳本為例。這類腳本通常用於處理表單資料或產生動態內容。伺服器必須執行這個檔案,才能產生結果。如果腳本沒有執行權限,伺服器就會回傳「500 Internal Server Error(500 內部伺服器錯誤)」或「Permission denied(權限遭拒)」之類的提示。你可以透過設定正確的權限模式 chmod 755 來解決這個問題。
常見需要執行權限的腳本包括:
- CGI 腳本(
.cgi檔案):這類檔案通常需要755權限,才能在 Web 伺服器上正常執行。 - 由內容管理系統產生的 PHP 輸出檔案:有些伺服器要求至少設定執行位,即權限至少為
755。預設的666權限會引發錯誤。 - 可執行二進位檔:安裝工具與實用程式在執行前需要先執行
chmod +x。
你的應用程式程式碼中通常包含這些可執行檔。伺服器需要具備正確的權限才能執行它們。沒有執行權限時,應用程式可能會靜默失敗,或顯示難以理解的錯誤訊息。很多時候,你花了數小時除錯,真正的問題卻只是少了執行位。
為什麼目錄需要執行權限才能進入
目錄與檔案的行為不同。目錄上的執行位,控制的是你是否能夠進入這個目錄。你可以把目錄想像成一個房間,而執行權限就是打開房門的鑰匙。沒有這把鑰匙,無論房間裡有什麼內容,你都無法走進去。
這種權限會影響整條路徑。如果某個目錄沒有給你執行權限,那麼你就無法存取其中的任何檔案或子目錄。即使單一檔案本身有讀取權限,你依然無法接觸到它,因為目錄已經把路徑完全阻斷了。
你可能會疑惑,為什麼只有讀取權限還不夠。原因在於:對目錄而言,沒有執行權限,你既不能列出目錄內容,也不能存取其中的檔案。執行位授予的是「遍歷」權限,也就是允許系統沿著路徑一層一層進入下一個目錄。
這正是 Linux 檔案權限在實際環境中的表現方式。你的 Web 伺服器必須對通往目標檔案的每一層目錄都擁有執行權限。比如路徑 /var/www/html,伺服器必須能依序遍歷 /var、/var/www 與 /var/www/html。只要其中任一目錄缺少執行權限,伺服器就無法存取到你的內容。
目錄的所有者通常會將權限設定為 755。這種模式使所有者擁有完整存取權限,而使用者群組成員與其他人只能讀取並進入該目錄。這在共享 Web 伺服器環境中非常常見,也在安全性與可用性之間取得了良好平衡。
你需要記住這條規則:目錄必須具備執行權限,才能被存取;檔案則只有在本身需要執行程式碼時,才需要執行權限。像 HTML 頁面、圖片這類靜態檔案,並不需要執行位,伺服器只要能讀取它們即可。
理解這一點可以避免大量設定錯誤。只要你真正明白執行位的作用,就能更快定位權限問題。先檢查目錄權限,再檢查檔案權限。這種有條理的排查方式,能節省大量時間與精力。
最小權限原則應當始終指導你的選擇。只授予完成任務所必需的權限。伺服器需要對目錄與腳本具有執行權限;靜態內容只需要讀取權限。把這個邏輯一致地應用到整個系統中,才是安全設定的關鍵。
在 Linux 檔案權限中使用 chmod 755 與 644
你可以使用 chmod 指令來控制 Linux 檔案權限。它的語法很簡單:輸入 chmod,後面接三位數字,再加上檔案或資料夾名稱。例如,chmod 755 foldername 或 chmod 644 filename。這個指令會修改所有者、使用者群組與其他人的存取權限。理解 chmod,有助於你為 Web 伺服器檔案設定正確的權限。你的 Web 伺服器必須有合適的權限,才能在不報錯的情況下提供內容。很多初學者不是把權限設得太寬鬆,就是設得太嚴格。適當的平衡,才能確保你的應用程式程式碼穩定運作。
Web 檔案與資料夾的標準使用情境
一台典型的 Web 伺服器會託管多種類型的檔案。不同類型的檔案,需要不同層級的權限。Web 伺服器需要讀取權限來提供靜態檔案;應用程式程式碼需要執行權限來執行腳本;設定檔則需要額外保護,以防被外部修改。你必須理解這些差異,才能正確設定權限。
WordPress 是一個常見的例子。WordPress 目錄通常使用 755 權限。所有者擁有完整的讀取、寫入與執行權限;使用者群組與其他人只有讀取與執行權限。WordPress 檔案通常使用 644 權限。所有者可以讀取與寫入;使用者群組與其他人只能讀取。這種設定適用於大多數網站。
下表展示了 WordPress 安裝環境中建議的檔案權限:
| 檔案/目錄類型 | 建議權限 |
|---|---|
| 目錄(public_html、wp-admin、wp-includes、wp-content) | 755 |
| 所有一般檔案(.php、.js、.css、模板檔案) | 644 |
| wp-config.php | 600 或 640 |
| wp-content/uploads 目錄 | 755 |
| wp-content/uploads 檔案 | 644 |
wp-config.php 是一個敏感的設定檔,其中包含資料庫憑證。你應該把它的權限改成 600 或 640,這樣可以防止其他使用者讀取它。預設的 666 權限會讓該檔案對所有人可寫,這是明顯的安全風險。
對於 LAMP 環境,你也應採取類似步驟。首先,把檔案所有權設定為 Apache 使用者。在 Ubuntu 中,這個使用者通常是 www-data。使用指令 sudo chown -R www-data:www-data /var/www/html。接著,把目錄權限設為 755,把檔案權限設為 644。你可以搭配 find 指令與 -exec chmod 遞迴套用這些設定。對於 uploads 這類需要寫入的目錄,可以使用 775 權限。這樣既能保留使用者群組的寫入權限,也能盡量確保伺服器安全。
安全最佳實務與常見錯誤
最常見的錯誤,就是使用 777 權限。它會給所有人完整的讀取、寫入與執行權限。攻擊者可以修改你的檔案,甚至注入惡意程式碼。這樣會讓伺服器暴露在極大的風險之下。生產環境中絕不能使用 777。
最小權限原則應成為你設定權限時的核心準則。你只授予真正必需的最少權限。這一原則適用於伺服器的每個部分。
權限設計中的最小權限原則
這一原則的核心,是僅授予元件正常運作所必需的最小權限。例如,與其授予廣泛存取能力,不如只為一次特定讀取操作授予一個明確的 URI 權限。這樣可以實現更細緻、按需的存取控制,並減少攻擊面。同樣的原則也適用於 Web 應用程式檔案權限:只授予 Web 伺服器提供檔案服務所必需的讀取、寫入與執行權限。這樣可以防止對敏感檔案的未授權存取。
安全設定錯誤是一項主要風險。OWASP Top 10 2021 將其列為第五大關鍵應用安全風險。常見的權限設定錯誤包括:
- 預設帳號與密碼仍然啟用
- 檔案與目錄未受到保護
- 目錄清單功能已開啟
- 雲端儲存桶對外開放
- 防火牆設定不當
你應該定期稽核伺服器。檢查是否存在未受保護的檔案。關閉目錄清單功能。為所有新檔案使用安全的預設權限。良好的設定,能夠預防大量攻擊。
你可以使用 chmod 指令來修改權限。對於目錄,執行 chmod 755 directoryname;對於檔案,執行 chmod 644 filename。你也可以使用 chmod -R 遞迴修改權限。但在遞迴修改時一定要小心,因為你可能會誤把原本不該可執行的檔案也加上執行權限。
你的 Linux 系統依賴正確的權限設定。檔案的所有者擁有完整控制權,其他使用者則只保留有限存取權限。這種平衡既能確保伺服器安全,也能讓應用程式程式碼正常運作,保護你的資料不被濫用。
請記住這些規則:目錄使用 755,檔案使用 644,敏感設定檔使用 600 或 640。把這些權限一致地套用到整個系統中,你的伺服器才能平穩且安全地運作。
何時選擇 755,何時選擇 644:實用指南
目錄與可執行檔案:使用 755
在 Web 伺服器上,所有目錄都應使用 755。目錄必須有執行權限,你才能進入其中。沒有執行位,你既無法進入資料夾,也看不到裡面的任何檔案。這條規則適用於所有 Linux 系統。你的 Web 伺服器必須逐層穿過路徑中的每個目錄,才能存取到目標內容。只要任何一層目錄缺少執行權限,伺服器就會顯示「Permission denied(權限遭拒)」錯誤。
可執行檔同樣需要 755。腳本、二進位程式與其他可執行檔案,都必須具備執行位才能啟動。你的應用程式程式碼中通常包含這些可執行部分。例如,處理表單資料的 PHP 腳本需要執行權限;產生動態內容的 CGI 程式也需要執行權限。你可以使用 chmod 指令設定這些權限。對目錄或腳本執行 chmod 755,即可讓所有者擁有完整控制權,同時讓其他使用者擁有讀取與執行權限。
靜態內容與資料檔案:使用 644
靜態檔案只需要讀取權限。HTML 頁面、CSS 樣式表、JavaScript 檔案與圖片都屬於這一類。你的 Web 伺服器會讀取這些檔案,再把它們傳送給訪客。在這個過程中並不會執行檔案內容。因此,所有靜態內容都應使用 644。這樣設定後,所有者擁有寫入權限,而其他所有人只有讀取權限。
資料檔案也應歸入 644 類別。設定檔、文字文件與資料庫備份都包含資訊,但不是可執行程式碼。給這類檔案設定執行權限,只會增加額外風險。使用者可能會誤把資料檔案當作程式執行。這不僅浪費資源,還有可能暴露敏感資料。
判斷規則其實很簡單:如果某個物件需要執行或需要被進入,就使用 755;如果它只需要被讀取,就使用 644。這個快速判斷方法有助於你在整台伺服器上設定安全的預設權限。這樣既能保護應用程式不被任意更動,也能確保 Web 伺服器正常運作。這種平衡能在不破壞網站功能的前提下強化安全性。請記住,Linux 檔案權限會直接影響伺服器的穩定性。每個檔案的所有者都掌握著它的命運。做出正確選擇,伺服器才能既安全又可靠。
現在你已經理解兩者的差異。目錄與可執行腳本使用 755;HTML、圖片等靜態內容使用 644。這個簡單規則能讓你的 Web 伺服器運作更順暢。
Linux 檔案權限會直接影響系統安全。絕不要使用 777。應當遵循最小權限原則。今天就稽核一下你的伺服器。檢查每個資料夾與檔案。把目錄設為 755,把檔案設為 644。這樣你的應用程式程式碼才能得到保護,伺服器也能保持安全。
請記住這個規則:如果它需要執行或需要被開啟,就用 755;如果它只需要讀取權限,就用 644。檔案權限對每位所有者來說都非常重要。
常見問題
為什麼我的 Web 伺服器會回傳「Permission denied(權限遭拒)」錯誤?
你的 Web 伺服器必須對通往目標檔案的每一層資料夾都擁有執行權限。只要有任何一個資料夾缺少這項權限,伺服器就無法繼續存取。請先檢查資料夾權限,並使用 chmod 將目錄設定為 755。這個方法可以解決大多數存取錯誤。
我可以給應用程式檔案設定 777 權限嗎?
不可以。777 會讓所有人都擁有對檔案的完整存取權限。攻擊者可以修改你的程式碼,或植入惡意內容。這種做法會帶來嚴重的安全風險。應當遵循最小權限原則:目錄使用 755,靜態檔案使用 644。這樣伺服器才能保持安全。
設定檔需要執行權限嗎?
設定檔保存的是設定,而不是可執行程式碼,因此它們只需要讀取權限。你可以將其設定為 644,或更嚴格。對於像 wp-config.php 這樣的敏感檔案,建議使用 600 或 640。這樣可以保護你的資料庫登入資訊。應用程式只需要讀取這些檔案,而不需要執行它們,因此伺服器也會更安全。
如何修復 Linux 伺服器上的權限問題?
首先,找出是哪些檔案或目錄引發了問題。使用 ls -l 檢查所有權。然後套用正確的權限設定:目錄與腳本使用 chmod 755,靜態內容使用 chmod 644。每次修改後都測試一下 Web 伺服器。這種逐步排查的方法,可以解決大多數權限錯誤。
如果我移除了目錄的執行權限,會發生什麼事?
你將失去進入該目錄的能力。即使你擁有讀取權限,也無法存取其中的檔案。你的 Web 伺服器也無法從該目錄提供內容,訪客看到的將是錯誤訊息,而不是網站頁面。因此,目錄始終應保留執行權限。這條規則適用於所有 Linux 系統。
