正确的/ var / www和wordpress权限


41

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

我们有一些Wordpress项目位于/ var / www / wordpress1 / var / www / wordpress2等的子目录中。为了设置WP,我无法从浏览器访问这些子目录-或(我假设)要查看浏览器上的内容。我的浏览器显示403禁止错误。

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

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

我还应该提到,该子文件夹实际上是指向另一个内部硬盘上文件夹的simlinks-我认为这不会有所作为,但我想我应该公开一下。

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

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


请发布命令的输出ls -la /var/www
沙洛爵士(SirCharlo)2012年

请将该信息放在您的问题中!
豪尔赫·卡斯特罗

好吧,我花了一秒钟的时间来记住如何发布代码...
dpbklyn 2012年

好吧,试试看chown -R www-data:www-data /var/www
SirCharlo

2
我认为您现在的问题是您正在使用链接。Apache将不遵循链接。您要做的是将这些文件移动到/ var / www并配置apache以使用vitrualhosts。请参阅help.ubuntu.com/10.04/serverguide/httpd.html备用服务器,如果要使用的/hdd/web/wordpress话,将是正确配置Apache(根目录)。您可以配置apache以使用链接,但是我不建议这样做。另请参阅help.ubuntu.com/community/WordPress
Panther

Answers:


81

首先,您应确保用户名包含在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

与对wordpresslaravel或其他框架的特定权限相关,那么您可以分别阅读文档。

希望能帮助到你...


1
不适用于我,我要使用sudo chown www-data:www-data -R mywordpressdirectory/
路易(Louis)

更改所有权后,您也应该更改权限。您是否已将许可更改为755?
变形金刚

1
他做到了chmod。他将粘性位的权限更改为755(以保留www-data拥有的新文件。)
Zachary Dahan

我能找到的最好的解释,简短而甜蜜。谢谢。
Banago

1
因此,您将无法从管理面板安装/删除插件/主题等,因为WordPress没有写权限。
伊戈尔·斯科尔丁

3

显然,这是《 Ubuntu Server指南》中推荐的方式:

第11章Web服务器。

1.4。共享写权限

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

我使用www-data只需将“网站管理员”替换为您的组,请确保将用户添加到该组中。

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目录保留其根用户所有权,但可由本地用户编辑。

$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密钥的身份验证


1)在文件上保留setgid位。如果用户可以使文件可执行并运行它们,则看起来很奇怪,什么也不做,为安全问题打开了大门。但是,如果您对文件中的setgid感到满意,请find用just 替换complex sudo chmod -R g=srwX /var/www/html
temoto 2016年

2)find -exec chmod将为每个文件生成一个单独的程序,这很耗时,并且如果您有很多文件,则会给系统带来不必要的压力。解决方案:sudo find /var/www/html -type f -print0 |sudo xargs -0 chmod g=rw。xargs将尝试将尽可能多的文件路径提供给的单个实例chmod
temoto 2016年

0

检查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


谢谢大家...我决定走阻力最小的道路...删除了符号链接。一切正常。
dpbklyn 2012年

0

阅读有关Ubuntu安装指南

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

也许以这种方式安装它比尝试解压缩文件更容易。 /var/www

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

以任何方式在Apache上运行wordpress吧?如果你想那样做..你显示do为@metamorph,然后在apache2上给出permisson,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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.