我已经添加了 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
用户目录通常具有限制性权限,例如700
或750
。这可以阻止 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