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

标签 php linux security apache

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

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

  1. 标准的 PHP 5.3.x.x 安装是否可以在/bin 或/etc 中移动、复制或编辑系统文件(我以 Linux 服务器为例)?
  2. 这是个好主意/做法吗?

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

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

感谢您的帮助! :)

最佳答案

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

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

is this a good idea/practice?

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

关于php - PHP 可以移动并编辑服务器上的根系统文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8740253/

相关文章:

linux - 为什么这个shell脚本不运行?

security - 控制对 future 内容的访问

java - PreparedStatement IN 子句替代方案?

php - 多个表上的 Codeigniter/PHP 外部 JOIN 语法

php - 在 PHP 查询中将表数据内爆/分解为数组?

php - 在多线程之前在长时间运行的后台 shell 脚本中传递数组

javascript - 404 not found - JS 未向 PHP 发送变量

linux - 将所有以相同前缀开头的文件放在linux中的一个文件夹中

linux - 在所有用户完成任务之前如何防止启动/运行服务?

macos - 无法在 Mac OS 上编辑/System/Library/OpenSSL/openssl.cnf 文件(只读)