更正 /var/www 和 wordpress 的权限

更正 /var/www 和 wordpress 的权限

我已经设置了一个 LAMP 服务器,并且我可以通过 SSH 访问,并从我的网络内部(通过 ip 地址)的 Web 浏览器访问“它工作”页面,也可以使用 dyndns 从外部访问。

我们有一些 Wordpress 项目位于 /var/www/wordpress1 /var/www/wordpress2 等子目录中。我无法从浏览器访问这些子目录来设置 WP——或者(我猜)无法在浏览器上查看内容。我的浏览器出现 403 Forbidden 错误。

我认为这是一个权限问题。您能否告诉我以下权限的正确设置:

  1. 允许开发人员和我读/写。
  2. 允许 WP 设置并执行其操作
  3. 允许访问者通过网络访问网站。

我还应该提到,子文件夹实际上是另一个内部硬盘上的文件夹的模拟链接 - 我不认为这会产生什么影响,但我认为我应该公开。

total 12
drwxr-xr-x  2 root root 4096 2012-07-12 10:55 .
drwxr-xr-x 13 root root 4096 2012-07-11 20:02 ..
lrwxrwxrwx  1 root root   43 2012-07-11 20:45 admin_media ->     /root/django_src/django/contrib/admin/media
-rw-r--r--  1 root root  177 2012-07-11 17:50 index.html
lrwxrwxrwx  1 root root   14 2012-07-11 20:42 media -> /hdd/web/media
lrwxrwxrwx  1 root root   18 2012-07-12 10:55 wordpress -> /hdd/web/wordpress

这是使用的结果chown -R www-data:www-data /var/www

total 12
drwxr-xr-x  2 www-data www-data 4096 2012-07-12 10:55 .
drwxr-xr-x 13 root     root     4096 2012-07-11 20:02 ..
lrwxrwxrwx  1 www-data www-data   43 2012-07-11 20:45 admin_media -> /root/django_src/django/contrib/admin/media
-rw-r--r--  1 www-data www-data  177 2012-07-11 17:50 index.html
lrwxrwxrwx  1 www-data www-data   14 2012-07-11 20:42 media -> /hdd/web/media
lrwxrwxrwx  1 www-data www-data   18 2012-07-12 10:55 wordpress -> /hdd/web/wordpress

我仍然无法通过浏览器访问。

答案1

首先,你应该确保你的用户名包含在www-data组中。如果没有,你可以将你的用户名添加为www-data

sudo adduser $USER www-data

之后,你应该将 /var/www 的所有权更改为你的用户名

sudo chown $USER:www-data -R /var/www

下一步,用于一般实践,你应该将权限更改为 755 (rwxr-xr-x),出于安全原因,不建议将权限更改为 777

sudo chmod u=rwX,g=srX,o=rX -R /var/www

相关具体许可为了WordPress的或者laravel或其他框架,那么您可以分别阅读文档。

希望能帮助到你...

答案2

显然,这是 Ubuntu 服务器指南中的推荐方式:

第 11 章 Web 服务器。

1.4. 共享写权限

为了让多个用户能够写入同一目录,需要向他们共同的组授予写入权限。以下示例将 /var/www/html 的共享写入权限授予组“webmasters”

我用www-数据只需将“webmasters”替换为您的组,当然请确保将用户添加到该组中。

sudo chgrp -R webmasters /var/www/html
sudo find /var/www/html -type d -exec chmod g=rwxs "{}" \;
sudo find /var/www/html -type f -exec chmod g=rws "{}" \;

我刚刚在我的 Mac 桌面上使用 Dreamweaver 对其进行了测试,并上传和替换了文件、添加了文件等,它保留了正确的权限,但有一个例外,即本地用户成为新文件以及 www-data 的所有者,但任何由 root 在 html 目录中创建的文件都保留其作为 root 的所有权,但可由本地用户编辑。

$ls -l
$-rw-rw-r-- 1 localUser www-data 11505 May 28 09:56 index2.html
$-rw-rwSr-- 1 root  www-data 11535 May 28 09:58 index.html

希望这可以澄清一切,并帮助那些疲惫的人,因为我知道我一直对这种情况感到厌倦,但现在我清楚了。

哦,我强烈建议使用带密钥的 sftp 来访问您的 ftp,对我来说效果很好,不需要 PureFTP 或任何其他不安全的方法将文件传送到网站。Digital Ocean 网站上有几篇关于使用 ssh 密钥保护您的服务器的教程:

如何在 Linux 服务器上配置基于 SSH 密钥的身份验证

答案3

阅读周围Ubuntu 安装指南..

chown -R www-data /usr/share/wordpress

也许这样安装会更容易,而不是尝试解压文件/var/www

https://help.ubuntu.com/community/WordPress...

无论如何,wordpress 都可以在 apache 上运行...对吗?如果你想那样做...你可以像@metamorph 那样做,然后在 apache2 上授予权限,httpd.conf如下所示:

<VirtualHost *:80>
        ServerName site
        ServerName site.domain
        DocumentRoot /srv/www/wordpress.site

        DirectoryIndex index.php

</VirtualHost>

进而default-server.conf

<Directory "/srv/www/wordpress.site">
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

也许最好是一步一步来https://help.ubuntu.com/community/WordPress

答案4

检查 Apache 是否具有/hdd/web/media和的执行权限/hdd/web/wordpress

跑步:

chmod o+x /root /root/site /root/site/about

此外,Apache 必须配置为允许访问文件系统上的目录。这必须由系统管理员通过在 Apache 配置文件 (httpd.conf) 中插入指令来完成。

由于真实目录位于 Web 根目录内,因此它必须是可访问的,但可能尚未为该目录启用 FollowSymLinks - 这也必须添加到指令中。

http://httpd.apache.org/docs/2.0/mod/core.html#directory

相关内容