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

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

/var/www/我在将我的符号链接到我的主文件夹内的新目录时遇到了一些问题Webroot。我认为这些是由于我对 Linux 权限缺乏了解造成的。

据我所知,符号链接应该采用您想要链接的目录和您想要链接到的目录的形式,因此就我而言,我运行了:

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

这有点作用,如果我运行,ls/var/www/就可以看到目录中的所有文件Webroot

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

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

我之前曾运行过本地 apache 实例,将默认 vhost 的目录根指向该Webroot文件夹,在此实例中,我不需要更改任何权限。如能得到任何帮助,我将不胜感激。

答案1

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

1).启用Apacheuserdir模块。

sudo  a2enmod userdir

这将使Apacheuserdir模块. 此模块允许使用http://example.com/~user/句法。

现在您可以将网站内容放入~/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

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

答案2

这不是一个可以实现你想要的目标的好做法。

如果你使用 PHP,你可能需要看看执行苏php或者php-fpm快进快退


您对这个问题的看法是正确的,这是一个权限问题,因为您的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

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

答案3

我在 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,例如/家 像我这样的,因为这可能是安全问题。

“#“ 方法root 权限例如写须藤在命令之前;“$”表示单用户权限

答案4

我曾遇到过这个问题。但我不喜欢将我的主目录组更改为 www-data。这个问题可以通过修改虚拟主机的配置文件轻松解决。只需配置 Directory 标记以包含这些

<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

相关内容