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

时间:2012-01-05 09:35:56

标签: php linux security apache

这似乎是一个愚蠢的问题,但我用Google搜索无济于事。

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

  1. 标准的PHP 5.3.x.x安装可以在/ bin或者/ etc中移动,复制或编辑系统文件(我使用Linux服务器作为例子)吗?
  2. 这是一个好主意/实践吗?
  3. 我从未想过,如果恶意黑客能够将某些PHP注入某个站点,那么他们将被有效地授予对整个Linux服务器(及其所有系统文件)的访问权限。我只想过将PHP作为在/ vhosts目录中运行的东西(也许天真地)。

    很抱歉,如果这听起来像是一个愚蠢的问题,但是我无法真正测试我的理论,好像我的老板要看我编写/上传/执行一个在Linux文件系统中移动内容的脚本我会死的。

    感谢您的帮助! :)

3 个答案:

答案 0 :(得分:3)

PHP可以向您的服务器提供其运行的用户帐户的权限,以允许它执行。 PHP作为一种语言不受任何限制(至少在权限方面),它是受限制的用户帐户。

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

  

这是一个好主意/实践吗?

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

答案 1 :(得分:1)

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

这完全取决于谁在运行它。如果它root它可以做任何事情。如果它只是普通用户 bob 。它不能在家外/home/bob做很多事情。 Apache也像 bob Apache 通常在 www-data www apache 用户名下运行。

答案 2 :(得分:1)

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

让我们假设您运行PHP通过apache和apache设置为以用户www-data运行所有进程 - 这是OS的默认设置,如Debian。如果你给用户www-data权限编辑/ etc然后是,PHP可以读取和写入/ etc中的文件

您发现只有一个主要缺点;安全,安全和保障。您还可以更好地确保您的PHP正常工作,因为1错误编写的文件现在可以取消整个服务器。

我绝对不会在你的老板身后练习你的老板。考虑获得一个廉价的虚拟机,无论是在其他地方托管还是在您自己的虚拟机的curtsey