PHP可以在服务器上移动和编辑根系统文件吗


Can PHP move around and edit root system files on a server?

这似乎是一个愚蠢的问题,但我在谷歌上搜索了一下,但没有结果。

我一直认为PHP是一种创建动态数据库驱动网站的语言,我从未想过使用它在实际服务器上移动系统文件(因为我从未有过这样的需要)。我的问题是:

  1. 一个标准的PHP 5.3.x.x安装程序能在/bin或/etc/etc中移动、复制或编辑系统文件吗
  2. 这是个好主意/做法吗

我从未想过,如果一个恶意黑客能够将一些PHP注入一个网站,他们将被有效地授予访问整个Linux服务器(及其所有系统文件)的权限。我只想过PHP是在/vhosts目录中运行的东西(也许是天真的)。

很抱歉,如果这听起来像是一个愚蠢的问题,但我不能真正测试我的理论,就好像我的老板看到我写/上传/执行一个在Linux文件系统中移动东西的脚本一样,我会死的。

谢谢你们的帮助!:)

PHP可以访问您的服务器,无论它运行的用户帐户的权限允许它做什么。PHP作为一种语言没有任何限制(至少在权限方面),受限制的是用户帐户。

这就是为什么人们通常会在这里为Apache/nginx/insert web服务器创建一个用户来作为运行,并且只授予它操作与web服务器相关的文件和目录的权限。如果您不授予此用户对/bin/etc的访问权限,它将无法执行任何会影响它们的操作。

这是个好主意/做法吗?

通常不会。将系统管理留给系统管理员,而不是请求PHP脚本的用户。

PHP可以尝试调用许多系统命令来移动或直接编辑硬盘上的文件。是否成功取决于安全设置。

让我们假设您通过apache和apache运行的PHP被设置为以用户www数据的形式运行所有进程——这是像Debian这样的操作系统的默认设置。如果你允许用户编辑/etc/www数据,那么是的,PHP可以读写/etc/中的文件

正如你所指出的,只有一个主要的缺点;安全、安保和安保。您还应该确保您的PHP正常工作,因为一个错误写入的文件现在可能会占用整个服务器。

我也绝对不会背着老板在你的服务器上练习。考虑获得一个廉价的虚拟机,无论是托管在其他地方还是在您自己的虚拟机上

是的,可以。它是一种编程语言,可以做任何事情

这完全取决于谁在运行它。如果它是root,它可以做任何事情。如果它只是一个普通用户bob。在家庭/home/bob之外,它不能做太多事情。Apache也类似于bobApache通常在www数据wwwApache用户名下运行。