我正在 CentOS 上设置一台 NetDisco 机器,这需要在 apache httpd.conf 文件中添加一个包含内容。
当我通过从根命令提示符运行“httpd”来启动 apache 时,该进程启动。
当我尝试通过运行“service httpd start”启动 apache 时,我得到以下输出:
Starting httpd: httpd: Syntax error on line 1010 of /etc/httpd/conf/httpd.conf:
Could not open configuration file /usr/local/netdisco/netdisco_apache.conf:
Permission denied
[FAILED]
该文件具有以下权限:
-rw-r--r--. 1 root root 1798 Apr 22 18:46 netdisco_apache.conf
并且 httpd.conf 具有以下权限:
-rw-r--r--. 1 root root 34520 Apr 22 17:06 httpd.conf
为什么?具有完全相同权限的文件肯定可以被 apache 服务访问?
答案1
尝试检查包含 netdisco_apache.conf 的文件夹的权限
您是对的,Apache 应该能够访问该文件,因为它具有相同的权限,但它可能无法访问它所在的文件夹。
如果您不想更改文件夹权限,只需将 netdisco_apache.conf 移动到 /etc/httpd/conf 目录(如果这样做,请记住在 /etc/httpd/conf/httpd.conf 文件中更新对它的引用。)
答案2
我将新配置文件放在 /etc/httpd/conf 目录中,但这并没有解决问题。然后我更改了权限以匹配 httpd.conf,但这并没有解决问题。
然后我学习了命令ls -Z
。我的输出如下:
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 httpd.conf
-rw-r--r--. root root unconfined_u:object_r:user_home_t:s0 httpd-vhosts.conf
注意最后的部分。这称为上下文。我以我的用户身份创建了它,并赋予了它 unconfined_u 部分。为了解决这个问题,我运行了:
sudo chcon system_u:object_r:httpd_config_t:s0 httpd-vhosts.conf
这解决了问题。
答案3
如果您正在编辑 apache.conf,然后保存并意识到您没有当前文件的权限,则很容易发生这种情况。如果您保存到桌面,然后使用提升的权限,将 conf 复制回原位。感谢您对此的说明。