每個主機和主機的情況可能有所差異,如下隻是概括性地描述,并不一定适用于所有情況。它隻适用于進行“正常設定”的情況(注:比如通過“suexec”方式來進行共享主機的,詳情見下方)
通常,所有檔案是由您的賬戶(或者說是 FTP 賬戶)所有的,同時您的賬戶也具有寫權限。在共享主機上,檔案不應該由網頁伺服器本身的程序所有(有時候是www、apache或nobody使用者)。
所有 WordPress 需要寫的檔案,都應由 WordPress 使用的使用者賬戶所有,或由該賬戶所在的組所有。比如說,您有一個用于 FTP 檔案傳輸的使用者帳戶,但您的伺服器使用另一個單獨的使用者,該使用者又在單獨的使用者組中(比如 dhapache or nobody)。 如果 WordPress 以您的 FTP 賬戶運作,那個賬戶則需要擁有寫權限 —— 也就是說,成為該檔案的所有者,或處于擁有寫權限的組中。在後面的例子中,則需要設定比預設值更高的權限(比如,應在目錄上應用 775 權限,而不是 755;應在檔案上應用 664 權限,而不是 644)。
對于 WordPress 來說,檔案和目錄的設定在大多數情況下對于所有使用者都應一樣,這取決于您的安裝類型,以及您系統安裝時的 umask 設定。
NOTE: 若您是自己安裝 WordPress,您大概不需要修改檔案權限。除非您遇到了權限方面的問題,或您希望進行更改。
<a href="http://codex.wordpress.org/index.php?title=Template:Note_2&action=edit&redlink=1">Template:Note 2</a>
通常,所有 WordPress 核心檔案都應隻能有您的使用者賬戶(或 httpd 所用的賬戶)所寫入。(有時候您可能使用多個 FTP 賬戶來管理 WordPress 檔案,且所有的 FTP 賬戶都十分可信,比如您不在共享的主機上,那麼為組設定寫權限也可以。請聯系主機提供商以了解詳情。)然而,若您使用 mod_rewrite 固定連結等 .htaccess 功能,則您需要讓 WordPress 對<code>/.htaccess</code>檔案可寫。
若您希望使用内置主題編輯器,所有檔案應對組可寫。在修改之前請先編輯試試,看看能否直接編輯成功。(如果是多個使用者上傳的 WordPress 包、插件或主題,則大概需要進行修改。若主題和插件是通過站點背景安裝的,就不會有問題。在共享主機中,請确認該組中隻有您信任的使用者... apache 不應作為使用者,也不應該擁有檔案。)
關于插件的其它權限要求,請見插件相關文檔。
<a></a>
上方的權限設定可能不适用于使用了“suexec”來運作 PHP 的共享主機。當今很多服務提供商都開始使用這種方式了。在這種情況下,PHP 程序以 PHP 檔案的所有者來運作,使配置變得更加簡單、安全。
注意:suexec 方式不應用于單使用者情況下,因為它們隻有在多個使用者存在的時候才更安全。
在這種 suexec 的配置下,正确的權限方案很好了解:
所有檔案應由使用者的賬戶擁有,而不是 httpd 所使用的賬戶。
組的權限設定無關緊要了,除非網頁伺服器程序需要進行權限檢查。通常不會。
所有目錄應設定為 755 或 750。
所有檔案應設為 644 或 640。例外:wp-config.php 應設為 600,以防其它使用者讀取。
不應給任何目錄設定 777 權限,上傳目錄也不行。由于 PHP 程序是以檔案所有者的身份運作,它甚至可以寫入 755 權限的目錄。
FTP 程式(用戶端)允許你在遠端主機上為檔案及目錄設定權限。此功能在程式菜單中一般顯示為<code>chmod</code>或設定權限。
看以下截圖中的最後一欄 - 即顯示權限的地方。看起來是不是有點讓人迷惑,先不管它,注意字母的次序即可。

<a href="http://codex.wordpress.org/File:podz_filezilla_12.gif"></a>
初始權限
右擊'index.php'并選擇'檔案權限'
然後就會彈出一個視窗。
<a href="http://codex.wordpress.org/File:podz_filezilla_13.gif"></a>
修改檔案權限
别管這些複選框。隻要删除'Numeric value:'的内容并輸入所需的數值即可 - 此例中為666,點選确定(OK)即可。
<a href="http://codex.wordpress.org/File:podz_filezilla_14.gif"></a>
權限已被修改
現在你應該能看到權限已經被修改了。
要在FileZilla中顯示隐藏檔案的話,就要選擇頂部菜單中的'檢視(View)',然後選擇'顯示隐藏檔案'。然後螢幕中顯示的檔案就會重新整理,之前被隐藏的檔案此時就會顯示出來。
讓FileZilla總是顯示隐藏檔案 - 編輯(Edit)下,設定(Settings),遠端檔案清單(Remote File List),選擇總是顯示隐藏檔案(Always show hidden files)即可。
如果你可以通過shell/SSH通路主機帳戶的話,就可以使用<code>chmod</code>來修改檔案權限,此方法推薦進階使用者使用。在你開始使用<code>chmod</code>之前最好閱讀一下相關教程,以确認你自己完全了解該方法。如果權限設定不正确的話,你的網站就有可能會離線。
<a href="http://www.washington.edu/computing/unix/permissions.html">Unix權限</a>
<a href="http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/chmod.1.html">Apple Chmod相關參考</a>
完成2個步驟你就可以讓<code>wp-content</code>目錄下的所有檔案可寫,但在讓每個檔案及檔案夾可寫之前,你應當采取較安全的手段來修改目錄。請嘗試各指令,如果沒用的話,請依次進行嘗試,有的甚至可以讓外觀主題圖檔檔案變成可寫。将DIR替換為你希望進行寫入操作的檔案夾
如果以上這些均不允許你進行寫操作,請按次序重試一次,不過這次請将 -v替換為 -R,這将遞歸式地修改位于檔案夾中的各檔案。如果完成此操作後仍無法寫入的話,就可以嘗試777了。
<code>chmod</code>是一個unix指令,表示修改檔案的模式(即"change mode")<code>-R</code>标記的意思是将修改應用于<code>wp-content</code>中的所有檔案及目錄。766是我們所要修改的目錄具有的權限,它表示目錄可被WordPress及系統中其他所有的使用者讀和寫。最後我們有了需要修改的目錄名稱,<code>wp-content</code>。如果766無效的話,你可以嘗試使用777,這将使得所有的檔案及檔案夾對于所有使用者,組合程序可讀,可寫及可執行。
打開WordPress主目錄
輸入<code>chmod -v 666 .htaccess</code>
NOTE: 就安全性方面來看,對全局可寫目錄進行最低限度的保護也是很好的。使用 744這一具有較低許可範圍的設定做為開始,直到符合要求即止。如有必要的話才使用777,且時間不宜過久。
有關此權限的關鍵問題是,你的伺服器是如何設定的。你用FTP或SSH登入伺服器的使用者名很可能不是伺服器程式所使用的用于頁面托管的使用者名。
Apache伺服器通常為dhapache或nobody使用者帳戶擁有。這些帳戶對伺服器檔案的通路時受限的。通過将你的使用者帳戶擁有的個人文檔及檔案夾設定為全局可寫,那麼這些檔案及檔案夾就确實為全局可寫了。現在dhapache及nobody使用者對你的使用者帳戶檔案就具有完全的通路權了。
但同時這就使得某些人可以通過劫持你伺服器上的任何程序來通路你的檔案了,這還包括了在你機器上的其他使用者。是以修改權限時應當慎重。至少我從來沒有遇到過需要制定超過767權限的情況,是以在看到777時,自然就應當問問為何需要使用它。
作為将一個目錄甚至于一個檔案的權限設定為777的最壞結果, 惡意攻擊者将可以上傳檔案或者修改已經存在的檔案來執行代碼,以獲得你的部落格的所有控制權,包括你的資料庫和密碼。
通常可以通過Wordpress插件得到特性的增強,而無須自己面對潛在的危險。 可以聯系插件作者或者你的主機服務商來尋求解決方法。
.htaccess檔案是被目前伺服器程序所有者通路的一個檔案。是以如果你攝制的權限過低,那你的伺服器将無法通路該檔案進而引發錯誤。可以通過逐漸增權重限直到可以正常工作的方式來尋找最佳權限設定。
下面是一個關于自定義編譯php-cgi為二進制和自定義php.ini指定cgi-bin執行目錄的例子。通過.htaccess檔案防止使用者浏覽器直接通路編譯器和php.ini。
預設權限 (umask 022)
Secured Permissions
644 > 604 - The bit allowing the group owner of the .htaccess file read permission was removed. 644 is normally required and recommended for .htaccess files.
644 > 600 - 預先允許所有的組和所有的使用者都可以通路這一伺服器上的php.ini檔案,哪怕這樣的請求來自于網站。比較棘手的是php.ini隻能被php.cgi 使用,我們隻需要确認php.cgi程序是否已經在通路了。php.cgi在兩個檔案屬于同一使用者的時候會執行,也就意味着隻有一個使用者可以通路這一文 件。
755 > 711 這一檔案是一個編譯好的php-cgi二進制用來替換mod_php或者主機提供商預設的php目錄。 預設的權限是755。
755 > 100 - 由于安裝的使用者就是運作php cgi程序的所有者,其他的使用者或者組不需要通路,是以我們禁止了所有的除了執行的通路。 這非常有趣,你可以嘗試讀取檔案,寫檔案等操作, 不過這都需要執行php腳本。而作為這一檔案的所有者你可以随時改變它的權限。
引用至:http://codex.wordpress.org/zh-cn:%E6%9B%B4%E6%94%B9%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90
如何聯系我:【萬裡虎】www.bravetiger.cn
【QQ】3396726884 (咨詢問題100元起,幫助解決問題500元起)
【部落格】http://www.cnblogs.com/kenshinobiy/