我不明白为什么我会收到权限错误

我不明白为什么我会收到权限错误
Apache/2.4.18 (Ubuntu)
Ubuntu 16.04

我测试了初始配置,将浏览器指向服务器,并获得了正常的 ubunutu 页面。工作正常。

000-default.conf 是:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
</VirtualHost>

index.html 位于 /var/www/html 目录中,并且 /var/www/html 目录的权限设置为 0755

我创建了一个目录 /home/utils/rails/public,拥有用户 utils。我将此目录的权限设置为 0755

我将文件 index.html 从 /var/www/html 复制到 /home/utils/rails/public

然后我将 /etc/apache2/sites-available/000-default.conf 修改为以下内容:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /home/utils/rails/public
</VirtualHost>

我重新启动了 apache2,并将浏览器指向该位置,但这次我得到了

Forbidden
You don't have permission to access / on this server

如果我逆转该过程并将 DocumentRoot 改回 /var/www/html,则一切都正常运行。

我究竟做错了什么?

namei -lx /home/utils/rails/public
f: /home/utils/rails/public
Drwxr-xr-x root  root  /
drwxr-xr-x root  root  home
drwxr-xr-x utils utils utils
drwxrwxr-x utils utils rails
drwxr-xr-x utils utils public

答案1

以下内容解决了该问题:

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName myserver.net
    DocumentRoot "/home/utils/rails/public"
    <Directory "/home/utils/rails/public">
        <IfModule mod_negotiation.c>
            Options -MultiViews
        </IfModule>
        AllowOverride None
        Require all granted
   </Directory>
   LogLevel warn
   ErrorLog ${APACHE_LOG_DIR}/myserver.net_error.log
   CustomLog ${APACHE_LOG_DIR}/myserver.net_access.log combined
</VirtualHost>

关键是:

Require all granted

这是从 Apache 2.4 开始使用的。其他指令不是访问问题的关键,但我用它们来禁止 .htaccess 指令(允许覆盖)并处理多视图

将权限设置为 0755 有效,不需要更改

相关内容