IBM HTTP Server安装成功后主页无法访问(显示Forbidden)求助
咱们先从日志里的关键信息入手:
[Fri May 11 03:18:34.955151 2018] [core:error] [pid 23748:tid 140394669549312] (13)Permission denied: [client 172.16.100.25:56320] AH00035: access to / denied (filesystem path '/root/IHS') because search permissions are missing on a component of the path
问题的核心很明确:你把IHS的站点文件放在了/root目录下。/root目录是root用户的专属目录,默认权限是drwx------(也就是700),只有root自己能进入、读取里面的内容。但IBM HTTP Server是用非root用户运行的(通常是nobody或者专门的ihsuser),这个用户根本没有权限遍历/root目录,自然没法访问里面的IHS文件,所以会返回Forbidden。
给你几个解决方案,按安全规范程度排序:
方法一:迁移站点目录到非root路径(最推荐)
这是最合规的做法,从根源上解决权限问题:
- 先停止IHS服务:
(如果你的IHS安装路径不一样,替换成你实际的/opt/IBM/HTTPServer/bin/apachectl stopapachectl路径) - 创建一个适合web服务的站点目录,比如
/var/www/ihs,然后把/root/IHS下的所有文件移过去:mkdir -p /var/www/ihs mv /root/IHS/* /var/www/ihs/ - 修改目录和文件的权限,让IHS的运行用户能正常访问:
# 这里nobody是IHS默认的运行用户,如果你自定义过用户,就换成对应的用户组 chown -R nobody:nobody /var/www/ihs chmod -R 755 /var/www/ihs - 打开IHS的配置文件
httpd.conf(一般在/opt/IBM/HTTPServer/conf/目录下),把DocumentRoot和对应的<Directory>配置更新为新路径:DocumentRoot "/var/www/ihs" <Directory "/var/www/ihs"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> - 重启IHS服务:
现在再访问主页应该就能正常加载了。/opt/IBM/HTTPServer/bin/apachectl start
方法二:临时放宽/root目录的遍历权限(不推荐,仅用于测试)
如果你只是临时测试不想迁移目录,可以给/root目录添加其他用户的执行权限(目录的执行权限对应遍历权限):
chmod o+x /root
但要注意,这么做会让系统上所有用户都能进入/root目录,严重降低系统安全性,绝对不能在生产环境长期使用。
方法三:让IHS以root用户运行(极不推荐,安全风险极高)
有些用户会想着直接让IHS用root运行来绕过权限问题,但这是非常危险的操作——一旦web服务被攻击者攻陷,对方会直接获得root权限,整个服务器都会面临失控风险,强烈不建议这么做。
最后再提醒一句:永远不要把web服务的站点文件放在/root目录下,这既违反安全规范,也会给后续维护埋下各种权限隐患。
内容的提问来源于stack exchange,提问作者Aditya Datta

