意外地将 chown “root” 设置为我的所有服务器

意外地将 chown “root” 设置为我的所有服务器

我在我的 Web 服务器上运行了 2 个 magento 应用,我无意中从服务器的根目录设置了“chown -R www-data:www-data *”。这意味着所有文件都归 root 用户所有。

这立即在 magento 网站上引发了问题,即:mysql 没有连接,因为它应该使用“mysql”用户。

我从那时起就修复了这个问题,并将网页文件设置为由 www-data 拥有。

网站现在运行良好,但当我尝试完成订单时,它会挂起一分钟然后超时。订单在后台注册,但并没有像预期的那样显示“订单成功页面”。

我正在运行 nginx 和 php-fpm,php-fpm 日志读取如下:

[22-Mar-2013 13:31:24] WARNING: [pool www] child 1791, script '/var/www/website.com/index.php' (request: "POST /index.php") execution timed out (1436.378897 sec), terminating
[22-Mar-2013 13:31:24] WARNING: [pool www] child 1791 exited on signal 15 (SIGTERM) after 1600.011818 seconds from start
[22-Mar-2013 13:31:24] NOTICE: [pool www] child 2717 started

发生了什么?这可能是因为某些文件不属于其正确所有者吗?如果是这样,这些文件/文件夹是什么,以及它们应该属于哪个所有者?

编辑:这一定与 postfix 有关。正常的 php 脚本回显“Hello World”,渲染得很好,但当我在其中放入 mail() 函数时,它就挂起了。

答案1

假设您在执行此操作时是 root 身份,并且已完成 chown(并且没有使用 CTRL-C 快速取消)。

当我听到类似这样的事情时——即对整个文件系统递归地执行了 chown 或 chmod(或 rm -rf),我倾向于建议是时候重新开始了。您将永远追查问题。这对 Linux 机器来说是一件极具破坏性的事情,并且许多后续问题对于问题所在将不那么明显(特别是如果其他不知道 chown -R 的人出现并试图解决问题)。

根据您的 Linux 发行版,有些发行版会在其打包系统中保留有关原始所有权和文件权限的信息。可以将权限“重置”为包管理器安装时的状态。例如,此链接介绍了如何在基于 RPM 的发行版上执行此操作:http://www.cyberciti.biz/tips/reset-rhel-centos-fedora-package-file-permission.html

不过,到最后,如果可以的话,我还是建议重新开始。'chown -R' on * 比 'rm -rf *' 高一步,但最终结果可能相同——重新开始更容易。

答案2

如果您在 / 上运行该命令,则所有文件均归您的 Web 服务器 (www-data) 用户所有,而非 root 用户。如果没有进一步了解您的系统,我想象连接到您的应用程序的系统无法写入其文件。postfix 是否已启动?

您可能不会喜欢这个答案,但最好的解决方案是重建系统,重新安装应用程序并将其指向同一个数据库。

Linux 系统中有很多重要的权限,如果只修复最低限度的权限以使应用程序正常运行,则可能会留下严重的安全问题。例如,现在您的网络服务器可以写入您的 /etc/shadow 文件。

相关内容