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

ric*_*lla 15 permissions apache2

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

据我所知,符号链接应该采用您想要链接的目录和您想要链接到的目录的形式,所以在我的情况下,我跑了:

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

这有点奏效,如果我继续运行ls/var/www/我可以看到我Webroot目录中的所有文件。

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

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

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

ane*_*hep 15

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

1)。启用 apache userdir 模块。

sudo  a2enmod userdir
Run Code Online (Sandbox Code Playgroud)

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

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

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

3)。重启apache

sudo /etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)

现在,您可以通过将浏览器导航到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>
Run Code Online (Sandbox Code Playgroud)

然后重启apache。

就是这样。你完成了。

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

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


Web*_*ide 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
Run Code Online (Sandbox Code Playgroud)

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