Apache符号链接到主目录 – 权限错误

我有一些问题将我的/var/www/符号链接到我的主文件夹中的新Webroot目录。 我认为这些源于我对linux权限的不了解。

我知道,符号链接应该采取你想要链接的目录和你想要链接的目录的forms,所以在我的情况下,我运行:

sudo ln -s ~/Webroot/* /var/www/

这有点工作,如果我在/var/www/ i上运行ls可以看到我的Webroot目录中的所有文件。

每当我尝试运行我的Webroot文件夹中的文件时,我都会收到403权限错误,这是因为我的Webroot目录中的文件是由我创建的,而apache实例是作为www-data运行的?

如果是这种情况,这是否意味着我需要更改我创建的每个文件的权限才能运行它?

我之前运行了一个本地apache实例,我将默认vhost的目录根指向Webroot文件夹,在这个实例中我不需要更改任何权限。 任何帮助,将不胜感激。

这不是一个好习惯,我同意Weboide。 但是有一种简单的方法可以实现这一目标。

1)。 启用apache userdir模块。

 sudo a2enmod userdir 

这将启用apache userdir模块。 现在,您可以将网站内容放在~/Webroot/或主目录中的任何内容中。

注意:默认文件夹是~/public_html

2)。 对/etc/apache2/mods-enabled/userdir.conf必要的更改。

3)。 重启apache

 sudo /etc/init.d/apache2 restart 

现在,您可以通过浏览器导航到http:// ip-address / ~username来访问该站点。 您还可以为此站点设置虚拟主机。

如果你想运行php文件,你需要再做一步

编辑/etc/apache2/mods-enabled/php5.conf并注释以下行:

    php_admin_value engine Off    

然后重启apache。

而已。 你完成了。

编号:HTTPS://wiki.ubuntu.com/UserDirectoryPHP

希望这可以帮助。 如果您遇到任何困难,请随时在此处发布。

这不是实现你想要的好习惯。

如果您使用的是PHP,您可能需要查看suexecsuphpphp-fpmfastcgi


您的问题是正确的,这是一个权限问题,因为您的Webroot文件由与www-data不同的用户拥有。

这是解决问题的一个不太糟糕的解决方案。 请注意,您可能需要以root身份使用sudo或login。 确保您完全理解将要执行的所有命令!

更改Webroot文件夹和子文件夹和文件,以将组所有权设置为www-data并设置适当的权限:

 # set the group ownership to be www-data chgrp -R www-data /path/to/home/Webroot/ # make sure www-data has read & write permissions (change it to `g=r` if you want to only give read-only access) chmod -vR g=rw /path/to/home/Webroot/ # make sure www-data can access the folders by adding the group execute bit field to directories find /path/to/home/Webroot/ -type d -print0 | xargs -0p chmod -v g+x 

编辑:请注意,如果使用常规用户帐户添加文件/文件夹,则肯定需要再次运行这些命令。

我和Debian Lenny做了同样的事情,但我改为非hax模式,我已经正确配置了apache。 但是使用符号链接:

 $ ll /home drwxr-xr-x 8 root root 4,0K nov 14 14.59 . drwxrwxrwx 7 root root 4,0K nov 14 21.24 www -> /var/www 

我认为你应该检查/ Webroot的权限 ,我认为你的dir (〜)被读取保护,我的意思是,你必须运行这个:

 $ ls -la /home 

要设置正确的许可,请使用:

 # chmod 755 /home # chmod 755 /home/ # chown :www-data -R /home//Webroot # chmod 775 -R /home//Webroot 

我认为,它应该有所帮助,但请给我更多关于此的信息。 我建议你,从你的目录中取出Webroot,例如。 / home 像我一样 ,因为它可能是安全问题。

“#”表示root permisson ,ex。 在命令之前写sudo ; “$”表示单用户权限

您不仅要检查目的地的权限,还要检查其父项的权限。

我遇到了这个问题。 但我不喜欢将我的主目录组更改为www-data的想法。 通过修改virtualHost的配置文件可以简单地解决此问题。 只需配置Directory标记即可包含这些内容

  Order allow,deny Allow from all Require all granted  

Require all granted是我猜的新function; 默认值为denied

请参阅此页面以供参考: http : //httpd.apache.org/docs/current/mod/core.html#directory