一个常见的linux文件权限问题:Apache和WordPress
几周前,我从一个共享主机转到了一个VPS,我在WordPress上遇到了这些恼人的权限问题。你知道你可以从管理面板下载和升级插件(以及wordpress本身),但自从我移动它开始询问我的FTP凭据,这在我必须更新约20个插件时有点慢 我认为这应该是一种权利问题。我查看了共享托管wordpress文件,它们都属于用户名和组kovshenin(kovshenin:kovshenin),文件是-rw-r--r--目录是drwx-r-xr-x 在我的VPS上,apache在apache:apache下运行,我的文件是kovshenin:kovshenin。我应该怎么做才能让kovshenin和apache都可读写呢 此外,我将wordpress安装的所有文件和文件夹的权限更改为0777,这允许我在不使用FTP的情况下安装和删除插件,但当我推动自动升级到wordpress 2.8.1时,它仍然要求我提供FTP帐户。这是wp问题还是我遗漏了什么 谢谢 更新:我设法在MediaTemple共享主机上运行了一个常见的linux文件权限问题:Apache和WordPress,linux,apache,wordpress,permissions,Linux,Apache,Wordpress,Permissions,几周前,我从一个共享主机转到了一个VPS,我在WordPress上遇到了这些恼人的权限问题。你知道你可以从管理面板下载和升级插件(以及wordpress本身),但自从我移动它开始询问我的FTP凭据,这在我必须更新约20个插件时有点慢 我认为这应该是一种权利问题。我查看了共享托管wordpress文件,它们都属于用户名和组kovshenin(kovshenin:kovshenin),文件是-rw-r--r--目录是drwx-r-xr-x 在我的VPS上,apache在apache:apache下运
id
和id www-data
。用户kovshenin在组kovshenin中,www数据在组www数据中。没有更多的团体。有什么诀窍
另一个更新好的,我将apache
用户添加到kovshenin
组中,我的wordpress文件是kovshenin:kovshenin
带有rw-rw-r--
权限和drwxr-x
目录权限,但还是有问题。用户apache
可以访问文件和文件夹,我可以使用wordpress管理面板中的在线主题和插件编辑器,我可以从wordpress中更改.htaccess文件,但是插件/主题安装仍然要求我提供FTP凭据
有什么想法吗?谢谢。您可以根据授予www数据所有权 在WordPress目录中运行以下命令(需要sudo): 为Apache工作 我应该怎么做才能让kovshenin和apache都可读写呢
- 创建一个新组,如“wordpress”
- 将koveshenin和www数据用户添加到wordpress组
- 将所有文件的组所有者更改为wordpress(使用chgrp)
- 确保所有文件都是组可写的
- 在所有感兴趣的目录上设置g+s(setgid)权限位。
- 确保kovshenin和apache的默认umask包含组读写权限
最后的第二步是技巧。这意味着,每当kovshenin或apache在这些目录中创建文件时,组所有者将被设置为wordpress(而不是kovshenin或apache)。我遇到了同样的问题,我解决了这个问题,在plesk中关闭PHP“安全模式”,现在WP可以创建文件夹并移动文件而没有任何问题
我希望这对您有所帮助。假设您的wordpress安装目录为
/var/www/html
,请将所有文件和目录批量更改为正确的权限使用:
sudo find /var/www/html/ -type d -exec chmod 775 {} \;
sudo find /var/www/html/ -type f -exec chmod 664 {} \;
要批量更改所有内容的所有者组,请使用:
sudo chgrp -R <desired_username>.<desired_groupname> /var/www/html
sudo chgrp-R/var/www/html
当前,添加定义('FS_方法','direct')代码>到wp-config.php可能会起作用。但不确定这在09年是否有效。有关使用nginx的类似案例,请参见。我发现这是一个必不可少的步骤。这很好,但是我不能用我的普通用户编辑这些文件,这让我很害怕(它们不是kovshenin拥有的组吗?如果它们是,你应该仍然能够编辑它们。如果不是,那么你可以尝试让用户kovshenin成为它们拥有的组的成员,并在编辑它们之前使用newgrp将你的组更改为该组。它们是kovshenin拥有的组,但我将从用户kovshen上载新文件。)在将成为kovshenin:kovshenin,我将不得不再次周游。我正在为我的一些客户设置主机,我希望他们的文件是kovshenin:kovshenin风格,而不是apache(或www数据).我想知道MediaTemple是怎么做到的..你可以将你的普通用户添加到www数据组,或者你也可以在命令的开头附加sudo.什么命令?请阅读我试图做的事情,它不是那么简单..没有其他组。你是说在apache:apache下运行的apache可以通过www访问WordPress文件吗-数据:www数据?如果是这样,那么找出它是如何管理的,并对其进行配置。对kovshenin进行同样的操作:kovshenin.No。www数据在共享主机上,apache在www数据下运行。用户apace在我的VPS上,它在用户和组apache:apache下运行。好的,这更接近了,非常感谢,但是用户www数据和kovshen怎么会这样呢在Media Temple共享托管帐户上没有其他组?这叫什么把戏?;)很难说,但共享托管帐户可能是使用phpsuexec设置的。嘿,caf,还有一个问题。我将wp文件夹中所有文件和dir的组所有者改为apache,所有者仍然是kovshenin,所以它是kovshenin:apache,权限是0775,所以kovshenin和apache都有读写和执行文件的权限。很好。我做了g+s部分,新文件是用kovshenin:apache创建的,一切都很好,但是,新文件的权限是755。我该如何解决775的问题?已尝试设置g+ws。。似乎不起作用。有什么想法吗?再次感谢。哦,对不起,那一定是乌玛斯克号……)@克里斯托弗·里克斯:这意味着无论您使用什么方法来创建目录,都不会将setgid位复制到新目录中(标准的/bin/mkdir
实用程序会这样做)。创建目录后,您可能需要手动chmod g+s
。
sudo chgrp -R <desired_username>.<desired_groupname> /var/www/html