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

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

我希望在我的 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

相关内容