每次上傳檔案/外掛程式後,wordpress 目錄檔案所有權都會發生變化

每次上傳檔案/外掛程式後,wordpress 目錄檔案所有權都會發生變化

在centos 7上,我建立了一個具有根目錄所有權的wordpress網站網站名稱:網站群組和目錄權限第755章, 檔案權限第644章預設設定

當開發人員登入 WordPress 儀表板並嘗試將某些內容上傳到媒體或安裝外掛程式時,wp 表示沒有寫入權限,

然後我必須給 wp 根目錄 g+w 權限,然後他才能安裝外掛程式或上傳媒體。

上傳媒體後,上傳的外掛程式/媒體權限改為阿帕契:阿帕契網站名稱:網站群組

如何避免?

  1. 我給 wp 根目錄賦予 g+x 權限,讓開發者安裝外掛程式/上傳媒體
  2. 並且從 wp dashboar 上傳的任何所有權不應更改為 apache:apache

我嘗試了什麼

目前,我找不到其他方法來阻止這種情況,每次我都必須授予 g+w 權限,並在開發人員工作後將其恢復回來

答案1

Web 伺服器(或 PHP 進程,取決於您的設定)需要對該目錄的寫入權限。唯一可行的方法是以使用者身分執行所述進程websitename

主要的另一種選擇是透過 ACL 授予使用者apache寫入權限或將其新增至websitegroup群組中,但這也會導致上傳的檔案歸apache.如果您希望所有檔案和資料夾都歸您所有,則websitename需要以該使用者身分執行網頁伺服器。

答案2

您對如何配置的描述沒有幫助。讓我們從頭開始。

用戶:

  • apache - PHP 運行時執行的 uid
  • dev1、dev2、dev2 - 開發人員
  • 備份 - 用於建立網站的備份
  • 支持[n] - 用於調查問題

由於 Wordpress 的設計方式,除非「apache」對該網站具有完全的讀取/寫入存取權限,否則它的操作非常困難。

如果所有的管理都是透過Web UI完成的,那麼開發人員確實需要任何存取文檔根目錄中的檔案。不過,我看過開發人員經常使用 CLI 存取更新檔案的網站。因此,我們假設他們需要讀取/寫入存取權限。

備份 uid 需要對檔案進行唯讀存取。

支援需要對文件進行唯讀存取。

只剩下網站用戶了。這是你的構造。在缺乏有關如何使用它的附加資訊的情況下,它似乎完全是多餘的。

因此,唯一的存取類別是讀+寫和唯讀。但只是為了好玩,我們會說還有一個無法訪問的附加類別 - 並稱該用戶為“​​外星人”。

使用者所有權始終由創建文件的 uid 決定 - 並且每個使用者都是單值的。所以我們不能使用它作為允許存取的機制。

但是,使用者可以屬於多個群組,並且每個群組可以有多個使用者。因此我們可以將讀寫權限與特定的群組關聯起來。稱之為網路更新。

這就留下了唯讀存取權限(備份和支援)——可以透過「其他」權限位元提供。

但如何排除「外星人」呢?透過將網站放置在外國人無法存取的目錄中 - 這意味著我們需要另一個群組來識別具有以下權限的人:一些使用權。將此稱為網路存取。

所以群組成員身分:

  • 網路更新:apache、dev1、dev2...devn
  • webaccess:apache、dev1、dev2...devn、備份、支援[n]

然後我們就有了目錄、權限和所有權:

drwxr-x--- root:webaccess /var/www/SITENAME
drwxrwxr-x ????:webupdate /var/www/SITENAME/html  (document root)

一切都很好,但是當“webupdate”中的某人在文檔根目錄中創建新文件或目錄時,群組所有權將是他們的預設群組 - 而不是 webupdate。您可以使用目錄上的 setgid 位元來變更此行為:

drwxrwSr-x ????:webupdate /var/www/SITENAME/html

難題的最後一部分是確保 webupdate 成員的 umask 設定為 00x,以便新檔案和目錄獲得正確的權限。不要忘記在 sshd_config 中為 sftp 伺服器以及互動式 shell 設定此項目。

因此,一旦組就位,您就可以運行:

chown -R apache:webupdate  /var/www/SITENAME/html
chmod -r g+s /var/www/SITENAME/html

就是這樣 - 你永遠不必再次修復權限。

相關內容