发生了什么:
我开发了一个 LAMP 网站,客户要求我将其安装到他们的 EC2 实例上,Amazon Linux AMI 版本 2017.03
通常我将它们托管在我的 Centos 服务器上或一些常规的网络托管服务提供商处。
我于 8 月 17 日安装了该网站,一切正常,每天大约有 2000 名访问者。
客户今天打来电话说该网站瘫痪了。错误 500。
我登录后立即发现,Web 根文件夹中的所有文件均已递归丢失了所有 r 位。所有其他权限(如 w、x 和粘性位)均不受影响。
我为用户和组执行了 chmod +r 操作,一切又开始正常工作了。
错误日志:
[Wed Sep 06 16:01:01.734067 2017] [mpm_prefork:notice] [pid 14111] AH00171: Graceful restart requested, doing restart
[Wed Sep 06 16:01:02.327167 2017] [auth_digest:notice] [pid 14111] AH01757: generating secret for digest authentication ...
[Wed Sep 06 16:01:02.329737 2017] [lbmethod_heartbeat:notice] [pid 14111] AH02282: No slotmem from mod_heartmonitor
[Wed Sep 06 16:01:02.699353 2017] [mpm_prefork:notice] [pid 14111] AH00163: Apache/2.4.25 (Amazon) configured -- resuming normal operations
[Wed Sep 06 16:01:02.699380 2017] [core:notice] [pid 14111] AH00094: Command line: '/usr/sbin/httpd'
[Wed Sep 06 16:01:02.730492 2017] [:error] [pid 18035] [client x.x.x.x:60180] PHP Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0
[Wed Sep 06 16:01:02.730559 2017] [:error] [pid 18035] [client x.x.x.x:60180] PHP Fatal error: Unknown: Failed opening required '/var/www/html/index.php' (include_path='.:/usr/share/pear7:/usr/share/php7') in Unknown on line 0
最后两行重复直到结束......
访问日志或消息中没有什么特别之处。
有趣的是,这恰好发生在 Web 服务器访问日志轮换时。但这些日志每周轮换一次,之前没有出现过问题。
编辑:我检查了一下,过去两周内没有登录过,而且在此之前它一直是我的 IP。
我的问题是:是什么原因导致文件的读取权限被删除以及如何避免这种情况?
编辑 2:看来这是人为错误。请参阅下面的评论。
答案1
监控日志轮换(尽管我怀疑这是原因),并在下次运行时立即检查。检查您的 cron 任务以确保那里没有发生任何异常。
如果不是这个问题,那么很可能是有人意外运行了它并把它破坏了!