Apache2 无法启动:ssl.load 权限被拒绝

Apache2 无法启动:ssl.load 权限被拒绝

我正在 Ubuntu 10.04 LTS 服务器上设置 HTTPS 服务器。

配置完所有内容后,当我尝试启动服务器时,我得到:

root@dns2:/etc/apache2# /etc/init.d/apache2 start
 * Starting web server apache2
apache2: Syntax error on line 204 of /etc/apache2/apache2.conf: Could not open configuration file /etc/apache2/mods-enabled/ssl.load: Permission denied
   ...fail!

apache2.conf 中的相关行 204 是Include /etc/apache2/mods-enabled/*.load

mods-enabled(根据标准,软链接到 mods-available):

root@dns2:/etc/apache2# ls -l mods-enabled
total 0
<stuff>
lrwxrwxrwx 1 root root 26 2011-06-17 16:24 ssl.conf -> ../mods-available/ssl.conf
lrwxrwxrwx 1 root root 26 2011-06-17 16:24 ssl.load -> ../mods-available/ssl.load
<stuff>

可用模组:

-rw-r--r-- 1 root root 2412 2010-11-18 13:18 ssl.conf
-rw-r--r-- 1 root root   58 2010-11-18 13:18 ssl.load

我看不出出现此错误的任何原因。我完全困惑了。有什么想法吗?

编辑:sites-available 和 sites-enabled 目录权限

drwxr-xr-x 2 root root  4096 2011-06-17 16:36 sites-available
drwxr-xr-x 2 root root  4096 2011-06-17 16:28 sites-enabled

EDIT2:我尝试禁用 ssl 模块并启动 apache:

root@dns2:/etc/apache2# a2dismod ssl
Module ssl disabled.
Run '/etc/init.d/apache2 restart' to activate new configuration!
root@dns2:/etc/apache2# /etc/init.d/apache2 start
 * Starting web server apache2
apache2: Syntax error on line 236 of /etc/apache2/apache2.conf: Could not open configuration file /etc/apache2/sites-enabled/000-default-ssl: Permission denied
   ...fail!

000-default-ssl 指向默认的 ssl 虚拟主机配置文件。再次,所有权限都正确。删除 000-default-ssl 后,apache 正常启动。显然,因为现在它恢复为默认配置...

答案1

请记住,不仅要检查文件所在的目录,还要检查到该目录的所有路径。当(例如)/etc/apache2/ 只有 700 时,检查 /etc/apache2/mods-enabled/ 是没有意义的;)

尝试使用 apaches 控制命令以 root 身份启动它。

apache2ctl start

或者

sudo apache2ctl start

作为用户。检查是否收到相同的错误或更多信息。

答案2

我搞清楚了发生了什么。我的 apache2 的 AppArmor 配置文件阻止了对 mod_ssl 的访问。允许 apache2 访问其 AppArmor 配置文件中的上述文件可以解决所有问题。好吧,至少我知道 AppArmor 正在正常工作 =)

我不知道是否应该就此再问一个问题,但 AppArmor 对 Apache 的安全性是否足够好?我真的不想 chroot Apache,而且我听说 chroot 不太安全。

相关内容