“更改文件权限”的版本间的差异

来自WordPress中文文档
跳转至: 导航搜索
php5.cgi权限
 
(1个版本)
 
(未显示2个用户的2个中间版本)
第1行: 第1行:
 +
{{Languages|
 +
{{en|Changing File Permissions}}
 +
{{pt-br|Mudando Permissões de Arquivos}}
 +
{{ja|ファイルパーミッションの変更}}
 +
{{zh-cn|更改文件权限}}
 +
}}
 +
 
__TOC__
 
__TOC__
在计算机文件系统中,不同的文件和目录具有的strong权限/strong会指定哪些人及哪些内容可读,写,修改及访问。这是很重要的,因为 WordPress可能需要访问并写入codewp-content/code目录下的文件以启用特定的功能。
+
在计算机文件系统中,不同的文件和目录具有的<strong>权限</strong>会指定哪些人及哪些内容可读、写、修改及访问。这是很重要的,因为 WordPress 可能需要访问并写入 <code>wp-content</code> 目录下的文件以启用特定的功能。
  
 
== 权限模式  ==
 
== 权限模式  ==
  
pre style=font-size:1.1em;font-weight:bold;border:1px solid #80C9FF;background-color:#BFE4FF;width:45%;color:#000;padding:.5em;
+
<pre style="font-size:1.1em;font-weight:bold;border:1px solid #80C9FF;background-color:#BFE4FF;width:45%;color:#000;padding:.5em;">
   7       5     5
+
   7     5     5
  user   group  world
+
  用户    组   任何人
 
  r+w+x  r+x    r+x
 
  r+w+x  r+x    r+x
 
  4+2+1  4+0+1  4+0+1  = 755
 
  4+2+1  4+0+1  4+0+1  = 755
/pre
+
</pre>
  
 
权限模式是由用户,文件组及其他所有人各组数值分别相加得出的。从上面的图表中应该能看出个大概。
 
权限模式是由用户,文件组及其他所有人各组数值分别相加得出的。从上面的图表中应该能看出个大概。
第16行: 第23行:
 
*  e'''X'''ecute1  - 读/写/删除/修改/目录
 
*  e'''X'''ecute1  - 读/写/删除/修改/目录
  
pre style=font-size:1.1em;font-weight:bold;border:1px solid #80FF80;background-color:#BFFFBF;width:45%;color:#000;padding:.5em;
+
<pre style="font-size:1.1em;font-weight:bold;border:1px solid #80FF80;background-color:#BFFFBF;width:45%;color:#000;padding:.5em;">
 
   7      4      4
 
   7      4      4
  user   group  world
+
  用户    组   任何人
 
  r+w+x    r      r
 
  r+w+x    r      r
 
  4+2+1  4+0+0  4+0+0  = 744
 
  4+2+1  4+0+0  4+0+0  = 744
/pre
+
</pre>
  
 
=== 权限模式实例 ===
 
=== 权限模式实例 ===
 
{|
 
{|
|-  style=width:99%; margin:0 auto; border=0 cellpadding=3 cellspacing=1 align=center bgcolor=#eee color=000 border=1
+
|-  style="width:99%; margin:0 auto;" border="0" cellpadding="3" cellspacing="1" align="center" bgcolor="#eee" color="000" border="1"
! '''模式''' !! '''Str权限''' !! '''解释说明'''
+
! '''模式''' !! '''字符表示''' !! '''说明'''
 
|-
 
|-
| '''0477''' ||-r--rwxrwx|| 所有者仅可读(4),其他及组可读写执行(7)
+
| '''0477''' ||-r--rwxrwx|| 所有者仅可读(4),其他及组可读写执行(7)
 
|-
 
|-
| '''0677''' || -rw-rwxrwx||所有者仅可读写(6),其他及组可读写执行(7)
+
| '''0677''' || -rw-rwxrwx||所有者仅可读写(6),其他及组可读写执行(7)
 
|-
 
|-
| '''0444''' || -r--r--r--||所有均仅可读(4)
+
| '''0444''' || -r--r--r--||所有均仅可读(4)
 
|-
 
|-
| '''0666''' || -rw-rw-rw-||所有均仅可读写(6)
+
| '''0666''' || -rw-rw-rw-||所有均仅可读写(6)
 
|-
 
|-
| '''0400''' || -r--------||所有者仅可读(4),组及其他无任何权限(0)
+
| '''0400''' || -r--------||所有者仅可读(4),组及其他无任何权限(0)
 
|-
 
|-
| '''0600''' || -rw-------||所有者仅可读写(6),组及其他无任何权限(0)
+
| '''0600''' || -rw-------||所有者仅可读写(6),组及其他无任何权限(0)
 
|-
 
|-
 
| '''0470''' || -r--rwx---||所有者仅可读,组可读写执行,其他则无任何权限
 
| '''0470''' || -r--rwx---||所有者仅可读,组可读写执行,其他则无任何权限
第50行: 第57行:
 
|}
 
|}
  
== WordPress权限策略 ==
+
== WordPress 权限方案 ==
 +
 
 +
每个主机和主机的情况可能有所差异,如下只是概括性地描述,并不一定适用于所有情况。它只适用于进行“常规设置”的情况(注:比如通过“suexec”方式来进行共享主机的,详情见下方)
  
所有文件应由你web服务器上的用户帐户所有,并可由你进行写入。所有需从WordPress进行写入访问的文件,必须由web服务器用户帐户所有。举个例子,你所拥有的用户帐户使得你可以通过FTP程序将文件上传到服务器上,但你的服务器自身所有的其他某个独立用户可能位于某个独立的用户组中。如'''dhapache'''或'''nobody'''这样的用户。
+
通常,所有文件是由您的账户(或者说是 FTP 账户)所有的,同时您的账户也具有写权限。在共享主机上,文件不应该由网页服务器本身的进程所有(有时候是'''www'''、'''apache'''或'''nobody'''用户)。
  
wordpress文件及文件夹权限针对大部分用户来说应当是相同的,这是由你所使用的wordpress类型及安装时系统环境的umask设定所决定的。
+
所有 WordPress 需要写的文件,都应由 WordPress 使用的用户账户所有,或由该账户所在的组所有。比如说,您有一个用于 FTP 文件传输的用户帐户,但您的服务器使用另一个单独的用户,该用户又在单独的用户组中(比如 '''dhapache''' or '''nobody''')。如果 WordPress 以您的 FTP 账户运行,那个账户则需要拥有写权限 —— 也就是说,成为该文件的所有者,或处于拥有写权限的组中。在后面的例子中,则需要设置比默认值更高的权限(比如,应在目录上应用 775 权限,而不是 755;应在文件上应用 664 权限,而不是 644)。
  
{{Note| 如果你是自己安装的WordPress,那就不大可能需要修改文件权限。除非你遇到了权限相关的错误,或者是你自己''想要''修改文件权限,一般说来你无需为文件权限操心。}}
+
对于 WordPress 来说,文件和目录的设置在大多数情况下对于所有用户都应一样,这取决于您的安装类型,以及您系统安装时的 umask 设置。
  
{{Note| 如果你是利用Wordpress升级程序自动升级/安装插件和模板,则不需要做特别的权限设定。 所有的Wordpress相关的文件都应该至于你的账户下面, 你strong不/strong需要将他们设为可写(777)。如果你尝试改变文件的所有者/权限以便于升级程序能够正常工作,那很有可能会带来一个权限不正确的错误/问题。}}
+
{{Note|若您是自己安装 WordPress,您大概不需要修改文件权限。除非您遇到了权限方面的问题,或您''希望''进行更改。}}
  
对于WordPress核心文件来说,所有这些文件都仅可由你的用户帐户进行写入操作。但如果你使用了mod_rewrite永久链接或其他.htaccess相关的功能的话,那你就得确认WordPress也可以写入你的code/.htaccess/code文件。
+
{{Note 2|若您是自己安装 WordPress,则您有可能需要更改文件权限。有些文件和目录应该被设置更低的权限,比如 wp-config.php 文件。通常,这个文件在创建时是 644 权限,这有一定的风险。详见《Security and Hardening》}}
  
如果你想使用内置的外观主题编辑器,那么所有的文件都应是组可写的。在修改文件权限之前,请尝试进行使用,应无大碍。
+
通常,所有 WordPress 核心文件都应只能有您的用户账户(或 httpd 所用的账户)所写入。(有时候您可能使用多个 FTP 账户来管理 WordPress 文件,且所有的 FTP 账户都十分可信,比如您不在共享的主机上,那么为组设置写权限也可以。请联系主机提供商以了解详情。)然而,若您使用 mod_rewrite 固定链接等 .htaccess 功能,则您需要让 WordPress 对 <code>/.htaccess</code> 文件可写。
  
某些插件要求/wp-content/文件夹可写,但在这种情况下,在安装过程中这些插件应会进行提示。而在某些情况下可能需要指派755或更高的权限(某些host可能要求777)。对于code/wp-content/cache//code及code/wp-content/uploads//code也是如此。
+
若您希望使用内置主题编辑器,所有文件应对组可写。在修改之前请先编辑试试,看看能否直接编辑成功。(如果是多个用户上传的 WordPress 包、插件或主题,则大概需要进行修改。若主题和插件是通过站点后台安装的,就不会有问题。在共享主机中,请确认该组中只有您信任的用户... apache 不应作为用户,也不应该拥有文件。)
  
/wp-content/下的额外目录应针对需要它们的插件或外观主题进行记录,对应的权限可能会有所不同。
+
有些插件需要 /wp-content/ 目录可写 —— 如果这样,插件会在安装过程中告知您。有时,可能需要您分配 775 权限。同样,在某些情况下您也可能需要令 <code>/wp-content/cache/</code> 和 <code>/wp-content/uploads/</code> 可写(若使用了[[创建站点网络|多站点]],则也需要 <code>/wp-content/blogs.dir/</code> 可写)。
  
pre
+
关于插件的其它权限要求,请见插件相关文档。
 +
 
 +
<pre>
 
/   
 
/   
 
|- index.php
 
|- index.php
第85行: 第96行:
 
|- wp-includes
 
|- wp-includes
 
`- xmlrpc.php
 
`- xmlrpc.php
/pre
+
</pre>
 +
 
 +
=== 使用 suexec 的共享主机 ===
 +
 
 +
上方的权限设置可能不适用于使用了“suexec”来运行 PHP 的共享主机。当今很多服务提供商都开始使用这种方式了。在这种情况下,PHP 进程以 PHP 文件的所有者来运行,使配置变得更加简单、安全。
 +
 
 +
注意:suexec 方式不应用于单用户情况下,因为它们'''只有'''在多个用户存在的时候才更安全。
 +
 
 +
在这种 suexec 的配置下,正确的权限方案很好理解:
 +
 
 +
* 所有文件应由用户的账户拥有,而不是 httpd 所使用的账户。
 +
* 组的权限设置无关紧要了,除非网页服务器进程需要进行权限检查。通常不会。
 +
* 所有目录应设置为 755 或 750。
 +
* 所有文件应设为 644 或 640。例外:wp-config.php 应设为 600,以防其它用户读取。
 +
* 不应给任何目录设置 777 权限,上传目录也不行。由于 PHP 进程是以文件所有者的身份运行,它甚至可以写入 755 权限的目录。
  
== 使用FTP客户端 ==
+
== 使用 FTP 客户端 ==
  
FTP程序(客户端)允许你在远程主机上为文件及目录设定权限。此功能在程序菜单中一般显示为codechmod/code或设定权限。
+
FTP 程序(客户端)允许你在远程主机上为文件及目录设定权限。此功能在程序菜单中一般显示为 <code>chmod</code> 或设定权限。
  
在[[Installing_WordPress|WordPress安装]]中,你可能想要修改的两个文件应该是索引页,以及[[Blog_Design_and_Layout|控制布局]]的CSS。这里给出修改index.php的方法 - ''其他文件的修改步骤也是如此''。
+
{{Copyedit}}
 +
 
 +
在 [[安装_WordPress|WordPress 安装]]中,你可能想要修改的两个文件应该是索引页,以及[[Blog_Design_and_Layout|控制布局]]的CSS。这里给出修改 index.php 的方法 - ''其他文件的修改步骤也是如此''。
  
 
看以下截图中的最后一栏 - 即显示权限的地方。看起来是不是有点让人迷惑,先不管它,注意字母的次序即可。
 
看以下截图中的最后一栏 - 即显示权限的地方。看起来是不是有点让人迷惑,先不管它,注意字母的次序即可。
br /
+
<br />
 
[[Image:podz_filezilla_12.gif|center|thumb|400px|初始权限]]
 
[[Image:podz_filezilla_12.gif|center|thumb|400px|初始权限]]
  
右击'index.php'并选择'文件权限'br /
+
右击'index.php'并选择'文件权限'<br />
 
然后就会弹出一个窗口。
 
然后就会弹出一个窗口。
 
[[Image:podz_filezilla_13.gif|center|thumb|305px|修改文件权限]]
 
[[Image:podz_filezilla_13.gif|center|thumb|305px|修改文件权限]]
  
 
别管这些复选框。只要删除'Numeric value:'的内容并输入所需的数值即可 - 此例中为666,点击确定(OK)即可。
 
别管这些复选框。只要删除'Numeric value:'的内容并输入所需的数值即可 - 此例中为666,点击确定(OK)即可。
br /
+
<br />
 
[[Image:podz_filezilla_14.gif|center|thumb|400px|权限已被修改]]
 
[[Image:podz_filezilla_14.gif|center|thumb|400px|权限已被修改]]
 
现在你应该能看到权限已经被修改了。
 
现在你应该能看到权限已经被修改了。
第116行: 第143行:
 
== 使用命令行 ==
 
== 使用命令行 ==
  
如果你可以通过shell/SSH访问主机帐户的话,就可以使用codechmod/code来修改文件权限,此方法推荐高级用户使用。在你开始使用codechmod/code之前最好阅读一下相关教程,以确认你自己完全了解该方法。如果权限设定不正确的话,你的网站就有可能会离线。
+
如果你可以通过shell/SSH访问主机帐户的话,就可以使用<code>chmod</code>来修改文件权限,此方法推荐高级用户使用。在你开始使用<code>chmod</code>之前最好阅读一下相关教程,以确认你自己完全了解该方法。如果权限设定不正确的话,你的网站就有可能会离线。
  
 
* [http://www.washington.edu/computing/unix/permissions.html Unix权限]
 
* [http://www.washington.edu/computing/unix/permissions.html Unix权限]
 
* [http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/chmod.1.html Apple Chmod相关参考]  
 
* [http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/chmod.1.html Apple Chmod相关参考]  
  
完成2个步骤你就可以让codewp-content/code目录下的'''所有'''文件可写,但在让每个文件及文件夹可写之前,你应当采取较安全的手段来修改目录。请尝试各命令,如果没用的话,请依次进行尝试,有的甚至可以让外观主题图片文件变成可写。将'''DIR'''替换为你希望进行写入操作的文件夹
+
完成2个步骤你就可以让<code>wp-content</code>目录下的'''所有'''文件可写,但在让每个文件及文件夹可写之前,你应当采取较安全的手段来修改目录。请尝试各命令,如果没用的话,请依次进行尝试,有的甚至可以让外观主题图片文件变成可写。将'''DIR'''替换为你希望进行写入操作的文件夹
  
 
  chmod 746 -v DIR
 
  chmod 746 -v DIR
第136行: 第163行:
 
=== 关于Chmod ===
 
=== 关于Chmod ===
  
codechmod/code是一个unix命令,表示修改文件的模式(即strongch/strongange strongmod/stronge) code-R/code标记的意思是将修改应用于codewp-content/code中的所有文件及目录。766是我们所要修改的目录具有的权限,它表示目录可被WordPress及系统中其他所有的用户读和写。最后我们有了需要修改的目录名称,codewp-content/code。如果766无效的话,你可以尝试使用777,这将使得所有的文件及文件夹对于所有用户,组合进程可读,可写及可执行。
+
<code>chmod</code>是一个unix命令,表示修改文件的模式(即"<strong>ch</strong>ange <strong>mod</strong>e") <code>-R</code>标记的意思是将修改应用于<code>wp-content</code>中的所有文件及目录。766是我们所要修改的目录具有的权限,它表示目录可被WordPress及系统中其他所有的用户读和写。最后我们有了需要修改的目录名称,<code>wp-content</code>。如果766无效的话,你可以尝试使用777,这将使得所有的文件及文件夹对于所有用户,组合进程可读,可写及可执行。
  
如果你使用了[[Using Permalinks|固定链接]],就应当修改.htaccess 文件的权限以保证WordPress能够在你修改设定时进行更新,如新添页面,重新导向和分类时,就需要更新tt.htaccess/tt文件。
+
如果你使用了[[Using Permalinks|固定链接]],就应当修改.htaccess 文件的权限以保证WordPress能够在你修改设定时进行更新,如新添页面,重新导向和分类时,就需要更新<tt>.htaccess</tt>文件。
  
 
# 打开WordPress主目录
 
# 打开WordPress主目录
# 输入codechmod -v 666 .htaccess/code
+
# 输入<code>chmod -v 666 .htaccess</code>
  
 
{{Note|就安全性方面来看,对全局可写目录进行最低限度的保护也是很好的。使用 744这一具有较低许可范围的设定做为开始,直到符合要求即止。如有必要的话才使用777,且时间不宜过久。}}
 
{{Note|就安全性方面来看,对全局可写目录进行最低限度的保护也是很好的。使用 744这一具有较低许可范围的设定做为开始,直到符合要求即止。如有必要的话才使用777,且时间不宜过久。}}
第148行: 第175行:
  
 
有关此权限的关键问题是,你的服务器是如何设置的。你用FTP或SSH登入服务器的用户名很可能不是服务器程序所使用的用于页面托管的用户名。
 
有关此权限的关键问题是,你的服务器是如何设置的。你用FTP或SSH登入服务器的用户名很可能不是服务器程序所使用的用于页面托管的用户名。
pre style=font-size:1.2em;font-weight:bold;border:1px solid #FF9980;background-color:#FFCCBF;width:45%;color:#000;padding:.5em;
+
<pre style="font-size:1.2em;font-weight:bold;border:1px solid #FF9980;background-color:#FFCCBF;width:45%;color:#000;padding:.5em;">
 
   7      7      7
 
   7      7      7
 
  user  group  world
 
  user  group  world
 
  r+w+x  r+w+x  r+w+x
 
  r+w+x  r+w+x  r+w+x
 
  4+2+1  4+2+1  4+2+1  = 777
 
  4+2+1  4+2+1  4+2+1  = 777
/pre
+
</pre>
 
Apache服务器通常为'''dhapache'''或'''nobody'''用户帐户拥有。这些帐户对服务器文件的访问时受限的。通过将你的用户帐户拥有的个人文档及文件夹设定为全局可写,那么这些文件及文件夹就确实为全局可写了。现在dhapache及nobody用户对你的用户帐户文件就具有完全的访问权了。
 
Apache服务器通常为'''dhapache'''或'''nobody'''用户帐户拥有。这些帐户对服务器文件的访问时受限的。通过将你的用户帐户拥有的个人文档及文件夹设定为全局可写,那么这些文件及文件夹就确实为全局可写了。现在dhapache及nobody用户对你的用户帐户文件就具有完全的访问权了。
  
第193行: 第220行:
 
==== .htaccess权限 ====
 
==== .htaccess权限 ====
  
'''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 > 604''' - The bit allowing the group owner of the .htaccess file read permission was removed.  644 is normally required and recommended for .htaccess files.
  
 
==== php.ini权限 ====
 
==== php.ini权限 ====
  
'''644 600''' - 预先允许所有的组和所有的用户都可以访问这一服务器上的php.ini文件,哪怕这样的请求来自于网站。比较棘手的是php.ini只能被php.cgi使用,我们只需要确认php.cgi进程是否已经在访问了。php.cgi在两个文件属于同一用户的时候会执行,也就意味着只有一个用户可以访问这一文件。
+
'''644 > 600''' - 预先允许所有的组和所有的用户都可以访问这一服务器上的php.ini文件,哪怕这样的请求来自于网站。比较棘手的是php.ini只能被php.cgi使用,我们只需要确认php.cgi进程是否已经在访问了。php.cgi在两个文件属于同一用户的时候会执行,也就意味着只有一个用户可以访问这一文件。
  
 
==== php.cgi权限 ====
 
==== php.cgi权限 ====
  
'''755 711'''
+
'''755 > 711'''
 
这一文件是一个编译好的php-cgi二进制用来替换mod_php或者主机提供商默认的php目录。 默认的权限是755。
 
这一文件是一个编译好的php-cgi二进制用来替换mod_php或者主机提供商默认的php目录。 默认的权限是755。
  
 
==== php5.cgi权限 ====
 
==== php5.cgi权限 ====
  
'''755 100''' - 由于安装的用户就是运行php cgi进程的所有者,其他的用户或者组不需要访问,所以我们禁止了所有的除了执行的访问。 这非常有趣,你可以尝试读取文件,写文件等操作, 不过这都需要执行php脚本。而作为这一文件的所有者你可以随时改变它的权限。
+
'''755 > 100''' - 由于安装的用户就是运行php cgi进程的所有者,其他的用户或者组不需要访问,所以我们禁止了所有的除了执行的访问。 这非常有趣,你可以尝试读取文件,写文件等操作, 不过这都需要执行php脚本。而作为这一文件的所有者你可以随时改变它的权限。
 
   
 
   
 
  $ cat: php5.cgi: Permission denied
 
  $ cat: php5.cgi: Permission denied
第217行: 第244行:
 
* [http://codex.wordpress.org/Editing_wp-config.php#Override_of_default_file_permissions Override WordPress Default permissions]
 
* [http://codex.wordpress.org/Editing_wp-config.php#Override_of_default_file_permissions Override WordPress Default permissions]
  
==译者信息==
+
[[Category:安装]]
本文档由[http://codex.wordpress.org/User:Themedaily ThemeDaily]翻译br /
+
[[Category:开始使用]]
译者博客:[http://themedaily.com Free Wordpress Themes]br /
+
[[Category:高级话题]]
E-Mail:admin@themedaily.com
+
[[Category:排除问题]]
 
+
[[Category:用户界面链接到的页面]]
[[Category:Installation]]
 
[[Category:Getting Started]]
 
[[Category:Advanced Topics]]
 
[[Category:Troubleshooting]]
 
[[Category:UI Link]]
 

2015年2月12日 (四) 08:30的最新版本

wordpress.org.cn

在计算机文件系统中,不同的文件和目录具有的权限会指定哪些人及哪些内容可读、写、修改及访问。这是很重要的,因为 WordPress 可能需要访问并写入 wp-content 目录下的文件以启用特定的功能。

权限模式

  7      5      5
 用户     组   任何人
 r+w+x  r+x    r+x
 4+2+1  4+0+1  4+0+1  = 755

权限模式是由用户,文件组及其他所有人各组数值分别相加得出的。从上面的图表中应该能看出个大概。

  • Read 4 - 允许读文件
  • Write 2 - 允许写/修改文件
  • eXecute1 - 读/写/删除/修改/目录
  7       4      4
 用户     组   任何人
 r+w+x    r      r
 4+2+1  4+0+0  4+0+0  = 744

权限模式实例

模式 字符表示 说明
0477 -r--rwxrwx 所有者仅可读(4),其他及组可读写执行(7)
0677 -rw-rwxrwx 所有者仅可读写(6),其他及组可读写执行(7)
0444 -r--r--r-- 所有均仅可读(4)
0666 -rw-rw-rw- 所有均仅可读写(6)
0400 -r-------- 所有者仅可读(4),组及其他无任何权限(0)
0600 -rw------- 所有者仅可读写(6),组及其他无任何权限(0)
0470 -r--rwx--- 所有者仅可读,组可读写执行,其他则无任何权限
0407 -r-----rwx 所有者仅可读,其他可读写执行,组则无任何权限
0670 -rw-rwx--- 所有者仅可读写,组可读写执行,其他则无任何权限
0607 -rw----rwx 所有者仅可读写,其他可读写执行,组则无任何权限
参考完整说明:0000 to 0777.

WordPress 权限方案

每个主机和主机的情况可能有所差异,如下只是概括性地描述,并不一定适用于所有情况。它只适用于进行“常规设置”的情况(注:比如通过“suexec”方式来进行共享主机的,详情见下方)

通常,所有文件是由您的账户(或者说是 FTP 账户)所有的,同时您的账户也具有写权限。在共享主机上,文件不应该由网页服务器本身的进程所有(有时候是wwwapachenobody用户)。

所有 WordPress 需要写的文件,都应由 WordPress 使用的用户账户所有,或由该账户所在的组所有。比如说,您有一个用于 FTP 文件传输的用户帐户,但您的服务器使用另一个单独的用户,该用户又在单独的用户组中(比如 dhapache or nobody)。如果 WordPress 以您的 FTP 账户运行,那个账户则需要拥有写权限 —— 也就是说,成为该文件的所有者,或处于拥有写权限的组中。在后面的例子中,则需要设置比默认值更高的权限(比如,应在目录上应用 775 权限,而不是 755;应在文件上应用 664 权限,而不是 644)。

对于 WordPress 来说,文件和目录的设置在大多数情况下对于所有用户都应一样,这取决于您的安装类型,以及您系统安装时的 umask 设置。

includeonlydiv style=clear:both; background-color:#ffffff; border:1px solid #c6d9e9; color:#000000; padding:7px; margin:0.5em auto 0.5em auto; vertical-align:middle;NOTE: 若您是自己安装 WordPress,您大概不需要修改文件权限。除非您遇到了权限方面的问题,或您希望进行更改。/div/includeonlynoinclude

Description

This Template is used by Codex:Template Messages.

Usage

pre 检查到模板循环:模板:Message /pre

Result

检查到模板循环:模板:Message

/noinclude

模板:Note 2

通常,所有 WordPress 核心文件都应只能有您的用户账户(或 httpd 所用的账户)所写入。(有时候您可能使用多个 FTP 账户来管理 WordPress 文件,且所有的 FTP 账户都十分可信,比如您不在共享的主机上,那么为组设置写权限也可以。请联系主机提供商以了解详情。)然而,若您使用 mod_rewrite 固定链接等 .htaccess 功能,则您需要让 WordPress 对 /.htaccess 文件可写。

若您希望使用内置主题编辑器,所有文件应对组可写。在修改之前请先编辑试试,看看能否直接编辑成功。(如果是多个用户上传的 WordPress 包、插件或主题,则大概需要进行修改。若主题和插件是通过站点后台安装的,就不会有问题。在共享主机中,请确认该组中只有您信任的用户... apache 不应作为用户,也不应该拥有文件。)

有些插件需要 /wp-content/ 目录可写 —— 如果这样,插件会在安装过程中告知您。有时,可能需要您分配 775 权限。同样,在某些情况下您也可能需要令 /wp-content/cache//wp-content/uploads/ 可写(若使用了多站点,则也需要 /wp-content/blogs.dir/ 可写)。

关于插件的其它权限要求,请见插件相关文档。

/   
|- index.php
|- wp-admin
|   `- wp-admin.css
|- wp-blog-header.php
|- wp-comments-post.php
|- wp-commentsrss2.php
|- wp-config.php
|- wp-content
|   |- cache
|   |- plugins
|   |- themes
|   `- uploads
|- wp-cron.php
|- wp-includes
`- xmlrpc.php

使用 suexec 的共享主机

上方的权限设置可能不适用于使用了“suexec”来运行 PHP 的共享主机。当今很多服务提供商都开始使用这种方式了。在这种情况下,PHP 进程以 PHP 文件的所有者来运行,使配置变得更加简单、安全。

注意:suexec 方式不应用于单用户情况下,因为它们只有在多个用户存在的时候才更安全。

在这种 suexec 的配置下,正确的权限方案很好理解:

  • 所有文件应由用户的账户拥有,而不是 httpd 所使用的账户。
  • 组的权限设置无关紧要了,除非网页服务器进程需要进行权限检查。通常不会。
  • 所有目录应设置为 755 或 750。
  • 所有文件应设为 644 或 640。例外:wp-config.php 应设为 600,以防其它用户读取。
  • 不应给任何目录设置 777 权限,上传目录也不行。由于 PHP 进程是以文件所有者的身份运行,它甚至可以写入 755 权限的目录。

使用 FTP 客户端

FTP 程序(客户端)允许你在远程主机上为文件及目录设定权限。此功能在程序菜单中一般显示为 chmod 或设定权限。

includeonlydiv style=clear:both; background-color:#EEEEFF; border:1px solid #CCCCCC; color:#000000; padding:7px; margin:0.5em auto 0.5em auto; vertical-align:middle;This article is marked as in need of editing. You can help Codex by editing it./div/includeonlynoinclude

Description

This Template is used by Codex:Template Messages.

Usage

pre 检查到模板循环:模板:Message /pre

Result

检查到模板循环:模板:Message

/noinclude

WordPress 安装中,你可能想要修改的两个文件应该是索引页,以及控制布局的CSS。这里给出修改 index.php 的方法 - 其他文件的修改步骤也是如此

看以下截图中的最后一栏 - 即显示权限的地方。看起来是不是有点让人迷惑,先不管它,注意字母的次序即可。

右击'index.php'并选择'文件权限'
然后就会弹出一个窗口。

文件:Podz filezilla 13.gif
修改文件权限

别管这些复选框。只要删除'Numeric value:'的内容并输入所需的数值即可 - 此例中为666,点击确定(OK)即可。

文件:Podz filezilla 14.gif
权限已被修改

现在你应该能看到权限已经被修改了。

显示隐藏文件

默认情况下,大部分FTP客户端,也包括FileZilla,都保留有隐藏文件,这些文件开头都带有一个句点(.),这样一来就不会显示出来了。不过在某些情况下,你可能需要查看这些隐藏文件,因此你就需要对这些文件的权限进行修改。比如,你可能需要使控制固定链接.htaccess文件可写。

要在FileZilla中显示隐藏文件的话,就要选择顶部菜单中的'查看(View)',然后选择'显示隐藏文件'。然后屏幕中显示的文件就会刷新,之前被隐藏的文件此时就会显示出来。

让FileZilla总是显示隐藏文件 - 编辑(Edit)下,设定(Settings),远程文件列表(Remote File List),选择总是显示隐藏文件(Always show hidden files)即可。

使用命令行

如果你可以通过shell/SSH访问主机帐户的话,就可以使用chmod来修改文件权限,此方法推荐高级用户使用。在你开始使用chmod之前最好阅读一下相关教程,以确认你自己完全了解该方法。如果权限设定不正确的话,你的网站就有可能会离线。

完成2个步骤你就可以让wp-content目录下的所有文件可写,但在让每个文件及文件夹可写之前,你应当采取较安全的手段来修改目录。请尝试各命令,如果没用的话,请依次进行尝试,有的甚至可以让外观主题图片文件变成可写。将DIR替换为你希望进行写入操作的文件夹

chmod 746 -v DIR
chmod 747 -v DIR
chmod 756 -v DIR
chmod 757 -v DIR
chmod 764 -v DIR
chmod 765 -v DIR
chmod 766 -v DIR
chmod 767 -v DIR

如果以上这些均不允许你进行写操作,请按次序重试一次,不过这次请将 -v替换为 -R,这将递归式地修改位于文件夹中的各文件。如果完成此操作后仍无法写入的话,就可以尝试777了。

关于Chmod

chmod是一个unix命令,表示修改文件的模式(即"change mode") -R标记的意思是将修改应用于wp-content中的所有文件及目录。766是我们所要修改的目录具有的权限,它表示目录可被WordPress及系统中其他所有的用户读和写。最后我们有了需要修改的目录名称,wp-content。如果766无效的话,你可以尝试使用777,这将使得所有的文件及文件夹对于所有用户,组合进程可读,可写及可执行。

如果你使用了固定链接,就应当修改.htaccess 文件的权限以保证WordPress能够在你修改设定时进行更新,如新添页面,重新导向和分类时,就需要更新.htaccess文件。

  1. 打开WordPress主目录
  2. 输入chmod -v 666 .htaccess

includeonlydiv style=clear:both; background-color:#ffffff; border:1px solid #c6d9e9; color:#000000; padding:7px; margin:0.5em auto 0.5em auto; vertical-align:middle;NOTE: 就安全性方面来看,对全局可写目录进行最低限度的保护也是很好的。使用 744这一具有较低许可范围的设定做为开始,直到符合要求即止。如有必要的话才使用777,且时间不宜过久。/div/includeonlynoinclude

Description

This Template is used by Codex:Template Messages.

Usage

pre 检查到模板循环:模板:Message /pre

Result

检查到模板循环:模板:Message

/noinclude

使用777的弊端

有关此权限的关键问题是,你的服务器是如何设置的。你用FTP或SSH登入服务器的用户名很可能不是服务器程序所使用的用于页面托管的用户名。

  7      7      7
 user   group  world
 r+w+x  r+w+x  r+w+x
 4+2+1  4+2+1  4+2+1  = 777

Apache服务器通常为dhapachenobody用户帐户拥有。这些帐户对服务器文件的访问时受限的。通过将你的用户帐户拥有的个人文档及文件夹设定为全局可写,那么这些文件及文件夹就确实为全局可写了。现在dhapache及nobody用户对你的用户帐户文件就具有完全的访问权了。

但同时这就使得某些人可以通过劫持你服务器上的任何进程来访问你的文件了,这还包括了在你机器上的其他用户。因此修改权限时应当慎重。至少我从来没有遇到过需要制定超过767权限的情况,因此在看到777时,自然就应当问问为何需要使用它。

最坏的结果

作为将一个目录甚至于一个文件的权限设置为777的最坏结果, 恶意攻击者将可以上传文件或者修改已经存在的文件来执行代码,以获得你的博客的所有控制权,包括你的数据库和密码。

寻找替代方法

通常可以通过Wordpress插件得到特性的增强,而无须自己面对潜在的危险。 可以联系插件作者或者你的主机服务商来寻求解决方法。

关于安全文件权限

.htaccess文件是被当前服务器进程所有者访问的一个文件。所以如果你摄制的权限过低,那你的服务器将无法访问该文件从而引发错误。可以通过逐步增加权限直到可以正常工作的方式来寻找最佳权限设置。

权限配置实例

下面是一个关于自定义编译php-cgi为二进制自定义php.ini指定cgi-bin执行目录的例子。通过.htaccess文件防止用户浏览器直接访问编译器和php.ini。

默认权限 (umask 022)

644 -rw-r--r--  /home/user/wp-config.php
644 -rw-r--r--  /home/user/cgi-bin/.htaccess
644 -rw-r--r--  /home/user/cgi-bin/php.ini
755 -rwxr-xr-x  /home/user/cgi-bin/php.cgi
755 -rwxr-xr-x  /home/user/cgi-bin/php5.cgi

Secured Permissions

600 -rw-r--r--  /home/user/wp-config.php
604 -rw----r--  /home/user/cgi-bin/.htaccess
600 -rw-------  /home/user/cgi-bin/php.ini
711 -rwx--x--x  /home/user/cgi-bin/php.cgi
100 ---x------  /home/user/cgi-bin/php5.cgi


.htaccess权限

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.

php.ini权限

644 > 600 - 预先允许所有的组和所有的用户都可以访问这一服务器上的php.ini文件,哪怕这样的请求来自于网站。比较棘手的是php.ini只能被php.cgi使用,我们只需要确认php.cgi进程是否已经在访问了。php.cgi在两个文件属于同一用户的时候会执行,也就意味着只有一个用户可以访问这一文件。

php.cgi权限

755 > 711 这一文件是一个编译好的php-cgi二进制用来替换mod_php或者主机提供商默认的php目录。 默认的权限是755。

php5.cgi权限

755 > 100 - 由于安装的用户就是运行php cgi进程的所有者,其他的用户或者组不需要访问,所以我们禁止了所有的除了执行的访问。 这非常有趣,你可以尝试读取文件,写文件等操作, 不过这都需要执行php脚本。而作为这一文件的所有者你可以随时改变它的权限。

$ cat: php5.cgi: Permission denied
./php5.cgi:  Welcome

See Also