我正在设置一台新计算机;旧设置是 Ubuntu 20.04 LTS;我放置了一个符号链接以允许 apache 访问我的内容。
sudo ln -s /home/ed/mystuff /var/www/html/stuff
这样我就可以通过浏览 localhost/stuff 来访问它,并且一切似乎都可以工作,无需任何进一步的配置。我知道这会带来安全问题 ,但它仅供我内部使用。
在我的新计算机上,我安装了 22.04 LTS,它(我认为)的配置方式完全相同,但现在导致 403/禁止错误。阅读一些类似的问题,我看到很多关于 www-data 拥有文件的参考,但在我的 20.04 上 /var/www 端的所有内容都是 root,而用户端的所有内容仍然由用户拥有。没有 www 数据。
在这一点上,我最好奇的是它之前在 20.04 上是如何工作的,但在 22.04 上除了 403/forbidden 之外什么也没有给出?
编辑添加:我没有更改任何配置文件,只是安装了 apache2。特别是我看到 /etc/apache2/apache2.conf 文件是相同的。
总结(?):为了回答我为什么它在以前的 Ubuntu(20.04)版本中工作但在较新的(22.04)版本中不起作用的困惑,无论出于何种原因,在过去,用户的主目录都是以 755 的权限创建的;但在较新版本的 ubuntu 中,它是使用 750 创建的...将其更改为 751 或 755 可以使其像以前一样工作。
如果在配置中启用符号链接不起作用,您可以使用绑定安装:
/etc/fstab
:挂载的处理级别低于 Apache2 或其周围的沙箱的处理级别。它看起来就像您最初放置
/home/ed/mystuff
在 处一样/var/www/html/stuff
,只不过它会保持完美同步。如果您在 下添加了自定义安装/home/ed/mystuff
,如果您希望它们可见而不是下面的东西,则可能还需要绑定它们。还要确保/home/ed/mystuff
Apache2 的用户可以读取要发布的文件树。Apache 有一个配置设置
Option FollowSymLinks
来控制这一点。如果配置中不存在该选项,则默认设置为打开,这可能是您之前版本中的设置。在新版本中,默认配置文件可能在某个地方包含设置为关闭的此选项。您必须检查配置文件并将选项更改为打开。以下是有用文档的链接:https://httpd.apache.org/docs/2.4/mod/core.html#options
此外,Apache 运行所在的用户必须可以访问(即具有权限)整个路径,即。本身,并且.
/home/ed/mystuff
x
/home/ed/mystuff
/home/ed
/home