Nginx

wp-config.php 中的 chmod 640 與 user:www-data 在 WordPress 上獲得白屏

  • October 15, 2016

我有一個帶有 Apache 2.4.23、PHP 7.1 RC3、FastCGI、PHP-FPM 的 Ubuntu 16.04.1,每個站點都有單獨的池,MariaDB、PhpMyAdmin、Webmin 和 Nginx 作為反向代理,因為我必須安裝 Varnish 和我的所有站點是 SSL。我還安裝了 WordPress。一切都是最新版本,並且工作正常。

安全方面,每個站點都通過 PHP-FPM 池與單獨的使用者所有者合作,並且所有內容都歸為user1:www-datauser2:www-data等。每個站點都在/home/user/domains/site/public.

正如我所說,一切似乎都很好,我正在做的最後一件事是 WordPress 中的良好安全性:

一切都啟用了 setgid 位。

  • wp-content每個子目錄都是2730,所有文件都是2640,這樣使用者就可以完全控制,www-data組可以進入文件夾,其他人不能做任何事情。
  • wp-content/themes- plugins-upgrade也是uploads2730。
  • 每隔一個目錄和子目錄是 2710,文件是 2640。
  • .htacces是0660,當我完成它時,它將是0640。

如前所述,一切正常,我能夠更新、安裝/刪除外掛和主題等。

但我遇到了問題wp-config.php。我可以將其設置為 644 甚至 404,但是當我將其設置為 640 - 或 400,這是我想要的 - 時,我會得到白屏當機。

我已檢查該文件是否歸user:www-data.

有人知道為什麼它需要其他人的讀取位嗎?

提前致謝。

好的,這是解決方案,它可能對其他人有用:

問題出在設置 chown 和 chmod 的過程中。您會發現重複的步驟。我不知道為什麼它必須按照這個確切的順序,因為結果似乎與我原來的順序相同(我已經用兩台不同的電腦仔細檢查過),但是正確的過程,一步一步,似乎如下:

你為網站準備目錄,我的計劃是這樣的:

/home/user1/domains/site1/public

/home/user1/domains/site2/public 等等……

  • 將 WordPress 文件複製到/public 目錄:
    sudo rsync -avP ~/wordpress/ /home/user1/domains/site1/public/
  • 授予使用者所有權:
    sudo chown -R user1:www-data /home/user1/domains/site1/public
  • 製作所需的文件夾並像以前一樣將它們放入:
    sudo mkdir wp-content/uploads sudo mkdir wp-content/upgrade sudo chown -R user1:www-data wp-content/uploads sudo chown -R user1:www-data wp-content/upgrade
  • 啟動 DocumentRoot 的setgid位,以便每個新文件夾/文件都繼承該組:
    sudo find /home/user1/domains/site1/public -type d -exec chmod g+s {} \; sudo find /home/user1/domains/site1/public -type f -exec chmod g+s {} \;
  • 為 WebServer授予Group寫入權限,以便能夠在 WordPress 安裝過程中設置主題和外掛:
    sudo chmod -R g+w /home/user1/domains/site1/public/wp-content/themes<br/> sudo chmod -R g+w /home/user1/domains/site1/public/wp-content/plugins
  • 獲取 wp-config.php 的密鑰,然後編輯該文件以安排數據庫設置和您想要調整的任何內容:
    curl -s https://api.wordpress.org/secret-key/1.1/salt/
    sudo nano wp-config.php
  • 現在是時候讓瀏覽器去http://www.site1執行 WordPress 安裝了。
  • 安裝 WP 後,讓我們加強安全性:
    sudo find /home/user1/domains/site1/public -type d -print0 | xargs -0 sudo chmod 710 sudo find /home/user1/domains/site1/public -type f -print0 | xargs -0 sudo chmod 640
  • 由於我們仍然需要一些文件夾來讓 WordPress(即 www-data)在其上寫入內容,因此我們需要重複一些步驟:
    sudo chmod g+w /home/skirev/domains/skireviewer/public/wp-content sudo chmod -R g+w /home/user1/domains/site1/public/wp-content/themes sudo chmod -R g+w /home/user1/domains/site1/public/wp-content/plugins sudo chmod -R g+w /home/user1/domains/site1/public/wp-content/uploads sudo chmod -R g+w /home/user/domains/site1/public/wp-content/upgrade
    這會將 wp-content 及其子文件夾設置為 730。
  • 現在我們可以保護 wp-config.php:
    sudo chmod 400 wp-config.php
  • 最後,我們的目錄仍然是 2710(除了 wp-content 和子文件夾,它們是 2730),但是我們的文件失去了setgid位。所以我們需要再次執行:
    sudo find /home/user1/domains/site1/public -type f -exec chmod g+s {} \;

引用自:https://serverfault.com/questions/809227