檔案系統存取許可權
本節探討如何為開發和生產系統設定Commerce檔案系統的擁有者或擁有者。 繼續之前,請檢閱檔案系統擁有權和許可權概觀中討論的概念。
本主題著重於Commerce開發和生產系統。 如果您正在安裝Commerce,請參閱設定安裝前的擁有權和許可權。
接下來的章節將討論一或兩個檔案系統擁有者的需求。 這表示:
-
一位使用者 — 通常在共用主機服務供應商上需要,這僅允許您存取伺服器上的一位使用者。此使用者可以使用FTP登入、傳輸檔案,而且此使用者還可以執行網頁伺服器。
-
兩個使用者 — 如果您執行自己的Commerce伺服器,我們建議兩個使用者:一個用來傳輸檔案和執行命令列公用程式,另一個是網頁伺服器軟體的個別使用者。 如果可能的話,這會比較好,因為比較安全。
而是由不同的使用者組成:
-
執行管理員和店面的網頁伺服器使用者。
-
命令列使用者,您可用來登入伺服器的本機使用者帳戶。 這類使用者會執行Commerce cron作業和命令列公用程式。
-
共用託管的生產檔案系統所有權(單一使用者)
若要使用單一擁有者設定,您必須以執行網頁伺服器的相同使用者身分登入您的Commerce伺服器。 這是共用託管的典型做法。
因為有一個檔案系統擁有者不太安全,建議您儘可能將Commerce部署在私人伺服器的生產環境,而非共用主機上。
為預設或開發人員模式設定一個擁有者
在預設或開發人員模式中,使用者必須可寫入下列目錄:
vendor
app/etc
pub/static
var
- 任何其他靜態資源
generated/code
generated/metadata
var/view_preprocessed
您可以使用命令列或共用託管提供者提供的檔案管理員應用程式,來設定這些許可權。
為生產模式設定一個擁有者
當您準備好將網站部署到生產環境時,您應該從以下目錄中的檔案移除寫入許可權,以提高安全性:
vendor
app/code
app/etc
pub/static
- 任何其他靜態資源
generated/code
generated/metadata
var/view_preprocessed
若要更新元件、安裝新元件或升級Commerce軟體,上述所有目錄必須為讀寫目錄。
將程式碼檔案和目錄設為唯讀
若要移除網頁伺服器使用者群組中檔案與目錄的寫入許可權:
-
登入您的Commerce伺服器。
-
變更至Commerce安裝目錄。
-
變更為生產模式。
code language-bash bin/magento deploy:mode:set production
-
移除下列目錄的寫入許可權。
code language-bash find app/code var/view_preprocessed vendor pub/static app/etc generated/code generated/metadata \( -type f -or -type d \) -exec chmod u-w {} + && chmod o-rwx app/etc/env.php
-
讓指令行工具可執行。
code language-bash chmod u+x bin/magento
讓程式碼檔案和目錄可寫入
若要讓檔案和目錄可寫入,以便更新元件和升級Commerce軟體:
-
登入您的Commerce伺服器。
-
變更至Commerce安裝目錄。
-
輸入下列命令:
code language-bash chmod -R u+w .
選擇性設定magento_umask
請參閱 安裝指南 中的選擇性設定umask。
私人託管的生產檔案系統所有權(兩個使用者)
如果您使用自己的伺服器(包括託管提供者的私人伺服器設定),則有兩個使用者:
-
執行Admin和Storefront的 網頁伺服器使用者。
Linux系統通常不會為此使用者提供殼層;您無法以網頁伺服器使用者的身分登入Commerce伺服器或切換至該使用者。
-
您以或切換身分登入您的Commerce伺服器的 命令列使用者。
Commerce使用此使用者執行CLI命令和cron。
note info INFO 命令列使用者也稱為_檔案系統擁有者_。
由於這些使用者需要存取相同的檔案,因此建議您建立他們共同所屬的共用群組。 下列程式假設您已完成此操作。
請參閱下列其中一節:
- 開發人員或預設模式中的兩個檔案系統擁有者
- 兩個檔案系統擁有者處於生產模式
設定預設或開發人員模式的兩個擁有者
在開發人員和預設模式下,下列目錄中的檔案必須可供使用者寫入:
var
generated
pub/static
pub/media
app/etc
設定目錄上的setgid
位元,讓許可權一律繼承自父目錄。
setgid
只適用於目錄,不 適用於檔案。此外,網頁伺服器群組應該可以寫入這些目錄。 由於內容可能存在於這些目錄中,因此以遞回方式新增許可權。
設定許可權和setgid
若要設定開發人員模式的setgid
和許可權:
-
以檔案系統擁有者的身分登入或切換到您的Commerce伺服器。
-
依照顯示的順序輸入下列命令:
code language-bash cd <magento_root>
code language-bash find var generated pub/static pub/media app/etc -type f -exec chmod g+w {} +
code language-bash find var generated pub/static pub/media app/etc -type d -exec chmod g+ws {} +
兩個檔案系統擁有者處於生產模式
當您準備好將網站部署到生產環境時,您應該從以下目錄中的檔案移除寫入許可權,以提高安全性:
vendor
app/code
app/etc
lib
pub/static
- 任何其他靜態資源
generated/code
generated/metadata
var/view_preprocessed
將程式碼檔案和目錄設為唯讀
若要移除網頁伺服器使用者群組中檔案與目錄的可寫入許可權:
-
登入您的Commerce伺服器。
-
變更至Commerce安裝目錄。
-
以檔案系統擁有者的身分,輸入下列命令以變更至生產模式:
code language-bash bin/magento deploy:mode:set production
-
以具有
root
許可權的使用者身分輸入下列命令:code language-bash find app/code lib pub/static app/etc generated/code generated/metadata var/view_preprocessed \( -type d -or -type f \) -exec chmod g-w {} + && chmod o-rwx app/etc/env.php
讓程式碼檔案和目錄可寫入
若要讓檔案和目錄可寫入,以便更新元件和升級Commerce軟體:
-
登入您的Commerce伺服器。
-
變更至Commerce安裝目錄。
-
輸入下列命令:
code language-bash find app/code lib var generated vendor pub/static pub/media app/etc \( -type d -or -type f \) -exec chmod g+w {} + && chmod o+rwx app/etc/env.php