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


15

即时通讯在将我链接/var/www/Webroot主文件夹中的新目录时遇到一些问题。我认为这些是由于我对Linux权限缺乏了解而引起的。

据我所知,符号链接应该采用您要链接的目录和您要链接的目录的形式,因此在我的情况下,我运行了:

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

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

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

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

我以前运行过本地apache实例,将默认虚拟主机的目录根指向该Webroot文件夹,在这种情况下,我不需要更改任何权限。任何帮助,将不胜感激。


您是否检查过以确保apache未配置为不遵循符号链接....我曾经遇到过此问题。在另一个论坛相关主题可能会在这里:linuxforums.org/forum/servers/...
RobotHumans

Answers:


15

我不同意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并注释以下几行:

 <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

然后重新启动apache。

而已。大功告成

参考:https://wiki.ubuntu.com/UserDirectoryPHP

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


7

这不是实现所需目标的好习惯。

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


您的问题是对的,这是一个权限问题,因为您的Webroot文件是由的其他用户拥有的www-data

这是解决问题的一种不错的解决方案。请注意,您可能需要使用sudo或root用户登录。确保您完全理解将要执行的所有命令!

更改您的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

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


2

我在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的权限,我认为您的目录(〜)已被读取保护,我的意思是,您必须运行以下命令:

$ ls -la /home

要设置正确的权限,请使用:

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

我认为,这应该有所帮助,但是请给我更多有关此的信息。我建议您从目录中删除Webroot,例如。到/家 和我一样,因为它可以是安全问题。

“#”表示根权限,例如。在命令前写sudo ; “ $”表示单用户许可


0

您不仅必须检查有关目的地的权限,还必须检查其父母的权限。


为什么?这是Apache限制还是文件系统限制?
Flimm 2012年

抱歉。我没有检查信息,它只是基于个人经验。
zVictor 2012年

0

我遇到了这个问题。但是我不喜欢将主目录的组更改为www-data的想法。只需修改virtualHost的配置文件即可解决此问题。只需配置目录标签以包括这些标签

<Directory "your directory here">
   Order allow,deny
   Allow from all
   Require all granted
</Directory>

Require all granted我猜这是一个新功能。默认值为denied

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

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.