You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Kubuntu到22.04.2 LTS后Apache2.4访问跨磁盘符号链接返回403/Forbidden错误

升级Kubuntu到22.04.2 LTS后Apache2.4访问跨磁盘符号链接返回403/Forbidden错误

嗨,我仔细梳理了你的问题细节,升级后Apache访问跨磁盘符号链接报403,结合你贴出的权限、配置信息,大概率是AppArmor安全限制或者目标目录的访问权限这两个容易忽略的点导致的,咱们一步步排查解决:

第一步:排查目标目录的访问权限问题

你提到自己加入了www-data组,但Apache是运行在www-data用户身份下的,咱们先验证这个用户能不能直接访问符号链接的目标目录:

sudo -u www-data ls /home/dracos/graphics/knotwork

如果这条命令返回Permission denied,那问题就出在权限上:

  • 当前/home/dracos的权限是0750,组归属是dracos,但www-data用户并不在dracos组里,所以它没有权限进入/home/dracos目录。
  • 解决方法二选一:
    1. 放宽/home/dracos的目录权限,让其他用户拥有执行权限(允许进入目录):
      chmod o+x /home/dracos
      
    2. 把www-data用户加入dracos组,让它继承组的访问权限:
      sudo usermod -aG dracos www-data
      sudo systemctl restart apache2
      

第二步:检查AppArmor的限制(这是22.04升级后最容易踩的坑)

Kubuntu 22.04默认启用了AppArmor,并且对Apache的访问范围做了更严格的限制——默认情况下Apache是不允许访问/home目录的,这会直接阻断跨磁盘符号链接的访问(毕竟你的/home在单独的磁盘上)。

解决步骤:

  1. 先确认AppArmor对Apache的规则处于生效状态:

    sudo aa-status
    

    你会看到usr.sbin.apache2处于enforcing模式(强制生效)。

  2. 编辑Apache的AppArmor配置文件:

    sudo nano /etc/apparmor.d/usr.sbin.apache2
    
  3. 在文件中找到类似以下的目录权限规则块:

    /var/www/ r,
    /var/www/** rw,
    

    在它下面添加允许访问你的目标目录的规则(尽量精确,避免过于宽泛的权限):

    /home/dracos/graphics/knotwork/ r,
    /home/dracos/graphics/knotwork/** rw,
    

    如果有多个需要访问的目录,也可以统一添加:

    /home/dracos/graphics/ r,
    /home/dracos/graphics/** rw,
    
  4. 重新加载AppArmor规则:

    sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.apache2
    
  5. 最后重启Apache让配置生效:

    sudo systemctl restart apache2
    

额外确认Apache配置

虽然你的配置里已经设置了FollowSymLinks,但还是要快速检查一遍:

  • 确认apache2.conf和你的虚拟主机配置中,对应/var/www/ref/htdocs/的Directory块里,Options确实包含FollowSymLinks,并且没有被-FollowSymLinks这类否定选项覆盖。

按照上面的步骤操作后,应该就能解决跨磁盘符号链接的403问题了。之前18.04没问题,是因为当时的AppArmor对Apache的限制没这么严格,升级后这个安全规则默认生效了,很容易被忽略。

备注:内容来源于stack exchange,提问作者Marty Vance

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 11:24:07