檔案系統存取許可權
本節探討如何為開發和生產系統設定Commerce檔案系統的擁有者或擁有者。 繼續進行之前,請檢閱中討論的概念 檔案系統擁有權和許可權概觀.
本主題著重於商務開發和生產系統。 如果您正在安裝Commerce,請參閱 設定安裝前的擁有權和許可權.
接下來的章節將討論一或兩個檔案系統擁有者的需求。 這表示:
-
一位使用者 — 通常在共用託管提供者上需要,這僅允許您存取伺服器上的一位使用者。此使用者可以使用FTP登入、傳輸檔案,而且此使用者還會執行網頁伺服器。
-
兩個使用者 — 如果您執行自己的Commerce伺服器,建議您使用兩個使用者:一個用於傳輸檔案和執行命令列公用程式,另一個用於網頁伺服器軟體的個別使用者。 如果可能的話,這會比較好,因為比較安全。
而是由不同的使用者組成:
-
執行管理員和店面的網頁伺服器使用者。
-
A 命令列使用者,此為本機使用者帳戶,可用來登入伺服器。 這類使用者會執行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
另請參閱 選擇性地設定收件者 在 安裝指南.
私人託管的生產檔案系統所有權(兩個使用者)
如果您使用自己的伺服器(包括託管提供者的私人伺服器設定),則有兩個使用者:
-
此 Web伺服器使用者,會執行管理員和店面。
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