解决方案 1:(有风险 - 请参阅解决方案)

解决方案 1:(有风险 - 请参阅解决方案)

我已经添加了 userdir 模块

a2enmod userdir

我在 sites-available/example.conf 中配置了以下内容

UserDir disabled
UserDir enabled lazaro
UserDir www

然后我创建了一个文件

/home/lazaro/www/index.html

具有以下权限

drwxrwxrwx 5 webdesigner www-data 4,0K Ago 25 11:05 www
-rwxrwxrwx 1 webdesigner www-data 350 Ago 25 11:01 index.html

当我尝试访问

http://www.example.com/~lazaro/index.html

我明白了

You don't have permission to access /~lazaro/index.html on this server.

ps 辅助 |删除 Apache

myself   29035  0.0  0.0  11780  2216 pts/1    S+   20:57   0:00 grep --color=auto apache
root     29172  0.0  0.1  73392  4196 ?        Ss   11:36   0:00 /usr/sbin/apache2 -k start
www-data 29175  0.0  0.1 493764  6268 ?        Sl   11:36   0:07 /usr/sbin/apache2 -k start
www-data 29176  0.0  0.1 1935956 7516 ?        Sl   11:36   0:06 /usr/sbin/apache2 -k start

我究竟做错了什么 ?

答案1

用户目录通常具有限制性权限,例如700750。这可以阻止 Web 服务器访问其子目录。可以通过将其更改为701或来允许其他人访问已知文件751。甚至限制更少的方法是使用755

用户目录通常是~/public_html用户的目录。尝试创建此目录并将文件放入其中。

选项的顺序通常很重要。尝试:

UserDir www
UserDir enabled lazaro
UserDir disabled

这些选项也可能有效:

UserDir www lazaro
UserDir disabled

对 的访问/home可能受到 的限制/。您可能还需要允许对 目录的访问。查看文档以确定它们是否适合您的要求。

<Directory /home/lazaro/www>
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS>
        Require all granted
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Require all denied
    </LimitExcept>
</Directory>

您的 apache 错误日志可能会解释正在应用哪些特定限制。

答案2

基于https://unix.stackexchange.com/a/768976/204785

解决方案 1:(有风险 - 请参阅解决方案

将 apache2 用户(在我的情况下www-data)添加到已登录用户组。这样www-data用户就可以访问所有内容/home/joe

adduser www-data joe

并且该组下的所有文件都public_html必须具有权限。rx

chmod -R g+rw /home/joe/public_html

解决方案 2:

允许任何人other搜索 ( x)/home/joe

chmod o+x /home/joe

此外,所有文件都public_html必须具有可访问的others权限rx

chmod -R o+rw /home/joe/public_html

相关内容