我希望在我的 Linux Mint 工作站上以与 OS X 上相同的方式拥有每个用户的 Web 目录。为了实现这一点,我在 ~/. 中创建了一个 public_html 目录,并将其 chmod 设置为 755,并安装了 userdir mod:
sudo a2enmod userdir
sudo /etc/init.d/apache2 restart
根据我对 usermod 工作原理的理解,应该不需要手动创建 vhost 配置,但即便如此,当我尝试访问时,我还是会得到这个http://127.0.0.1/~我的用户名:
禁止
您无权访问此服务器上的 /~dxh。
Apache/2.2.22 (Ubuntu) 服务器位于本地主机端口 80
我是否遗漏了一些神秘的额外步骤?
答案1
我会检查一些东西。
目录权限: 如果您的主目录是 /home/dxh/ 并且您刚刚创建了 /home/dxh/public_html/ 来保存您的 Web 内容,请确保父级目录允许访问:
ls -ld /home
ls -ld /home/dxh
ls -ld /home/dxh/public_html
每个目录的权限至少需要为“711”。这意味着上述“ls”命令的输出应如下所示:
drwx--x--x 33 dxm dxm 4096 2013-01-18 16:51 /home/dxm
或者
drwxr-xr-x 33 dxm dxm 4096 2013-01-18 16:51 /home/dxm/public_html
索引页/索引
接下来,如果您的 public_html 文件夹中没有“index”文件并且没有启用索引,Apache 可能会抛出 403 禁止错误。
解决方案 1:创建一个 index.html 文件
echo "index.html works" >> /home/dxm/public_html/index.html
echo "index.htm works" >> /home/dxm/public_html/index.htm
解决方案 2:在 .htaccess 文件中启用索引
echo 'Options +Indexes' >> /home/dxm/public_html/.htaccess
注意:启用索引将显示 public_html 文件夹的全部内容。如果其中包含敏感内容,请不要启用它。
否则,请检查你的 Apache 日志。运行
tail -f /var/log/apache2/error.log
然后点击该页面几次,看看会弹出什么错误。
答案2
在实现了 selinux 的系统上,您还需要发出以下命令:
setsebool -P httpd_enable_homedirs true
我已经设置了几次用户目录,但我还是总是忘记,直到我费尽心思才记住。这次我只花了两个小时就记住了!
答案3
基于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